创build系统帐户的最佳做法是什么? (* NIX)

我手动安装了名为Gate One的服务到/opt 。 我想加强它的安全性,所以我想我会创build一个系统帐户供其使用,因为最less的必要权限等等。

但是,当我运行adduser --system gateone ,它创build了一个我不想要的主目录。 因此,我运行adduser --system --home-dir /opt/gateone gateone ,因为我看过一些系统帐户设置的主目录属于他们。 但是,这使得loginshell /bin/sh而不是/bin/false ,这是它第一次完成(当我没有指定一个主目录)。 我现在有点困惑,我应该设置这些字段。

tl; dr:在* NIX操作系统上创build系统帐户时,设置主目录,loginshell和其他相关的最佳实践是什么? 为什么?

注意:我使用的是Ubuntu 13.04 Raring,如果它很重要的话,因为IIRC adduser可能会有相当的分配到分配。

除了shell必须是/ bin / false,除非需要shell,密码散列应该是! 除非用户需要login,否则应该给出一个描述性名称,并且如果应用程序不需要有效的主目录,则应该将主目录设置为/dev/null或类似。 用户应该有自己的组,最好在系统ID范围内; 如果不需要root的主要GID,就不要给它一个,当然也不要给没有特定要求的用户。 这一切都取决于。 指定你关心的所有事情(见所有可用选项的man adduser )。

如果您尝试安装应用程序,最好的select是为该系统打包,并按照该系统的pipe理指南(在指南中写有如何安装,在哪里,如何将应用程序与系统集成等)。 正如你使用Ubuntu,你可以按照Ubuntu / Debian指南。 起初可能会很费时间,但是如果您经常部署(通常是升级),或者在多台机器上部署,它可以帮助您。

adduser命令有切换设置你要求什么。 使用adduser --help 。 基本上你可以编写adduser --system --home /var/lib/my_app --shell /bin/false --disable-login --disable-password 。 请注意,大多数系统服务在/ var / lib /中有主目录,或者如果您没有为系统提供软件包,则可能应该如您在/opt/<service>