我使用以下命令在 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
选项。