我已经手动将名为 Gate One 的服务安装到/opt
. 我想加强它的安全性,所以我想我应该创建一个系统帐户供它使用,因为它需要最少的权限,等等。
但是,当我运行时adduser --system gateone
,它创建了一个我并不真正想要的主目录。因此,我跑了adduser --system --home-dir /opt/gateone gateone
,因为我看到一些系统帐户设置了属于他们的主目录。但是,这生成了登录 shell/bin/sh
而不是/bin/false
,这是它第一次完成的(当我没有指定主目录时)。我现在对应该将这些字段设置为什么有点困惑。
tl;dr:在 *NIX 操作系统上创建系统帐户时,设置主目录、登录 shell 和任何其他相关内容的最佳做法是什么?为什么?
注意:如果重要的话,我使用的是 Ubuntu 13.04 Raring,因为 IIRCadduser
的发行版之间可能会有很大差异。
没有真正具体的最佳实践,除了 shell 应该是 /bin/false 除非需要 shell,密码散列应该是
!
除非用户需要登录,应该给出一个描述性名称,以及一个 home/dev/null
如果应用程序不需要有效的主目录,则directory 应设置为或类似。用户要有自己的组,最好在系统ID范围内;例如,如果它不需要 root 的主 GID,就不要给它一个,当然也不要给它没有特定要求的用户。这一切都取决于。指定您关心的所有内容(man adduser
有关所有可用选项,请参阅 )。如果您尝试安装应用程序,最好的选择是为该系统制作一个程序包并遵循该系统的管理指南(在指南中写了如何安装,在哪里,如何将应用程序与系统集成等等)。当您使用 Ubuntu 时,您可以遵循 Ubuntu/Debian 指南。一开始它可能很耗时,但如果你经常部署它(经常升级)或在多台机器上它会帮助你。
adduser
命令有开关来设置你要什么。使用adduser --help
。基本上你可以写adduser --system --home /var/lib/my_app --shell /bin/false --disable-login --disable-password
。请注意,大多数系统服务在 /var/lib/ 中都有主目录,或者如果您没有为系统提供包,它可能应该像您在/opt/<service>