用于运行守护进程(Web 服务器、数据库)的服务/系统帐户是否需要有主目录

用于运行守护进程(Web 服务器、数据库)的服务/系统帐户是否需要有主目录

我使用以下命令在 Fedora 上创建了一个系统帐户

useradd -r -s /bin/false sysacct

然后创建一个目录并赋予 sysacct 权限

mkdir /var/sysacct
chown sysacct:sysacct /var/sysacct

现在,当我尝试以 sysacct 身份执行命令时

su - sysacct -c 'mkdir /var/sysacct/test'
I get error

无法将目录更改为 /home/sysacct:没有此文件或目录


Why do I need to specify a home directory for this account?

答案1

用于运行守护进程(Web 服务器、数据库)的服务/系统帐户是否需要有主目录

一般来说,帐户不需要有主目录,但需要各种特定的守护进程可能要求它们的 $HOME 指向一个存在的目录,或者可能运行其他需要 $HOME 存在的工具。

(例如,如果守护进程需要运行gpg来加密数据,即使守护进程本身不需要,gpg 也将需要一个主目录来存储 ~/.gnupg。)

为什么我需要为该帐户指定主目录?

因为你询问 su模拟“真实登录”过程,包括将工作目录更改为指定用户的主目录。这记录为--l选项效果的一部分。

如果您不想su这样做,请不要指定--l选项。

相关内容