运行守护进程的系统账户是否需要家目录?Fedora下su命令执行报错问题咨询
运行守护进程的系统账户是否需要家目录?Fedora下su命令执行报错问题咨询
嗨,我来帮你理清这个报错的原因和解决思路:
为什么会出现这个报错?
你用到的命令 su - sysacct -c 'mkdir /var/sysacct/test' 里,- 这个参数是关键。它的作用是让 su 模拟一个完整的用户登录会话——这意味着系统会尝试切换到该用户的家目录,同时加载该用户的环境变量配置文件(比如 .bashrc、.profile 这类)。
但你用 useradd -r 创建的是系统账户,默认情况下这类账户是没有家目录的,所以当 su - 尝试切换到 /home/sysacct 时,自然会提示“找不到该目录”。
守护进程用的系统账户需要家目录吗?
其实不需要!这类账户设计出来就是给后台服务/守护进程用的,它们不需要交互式登录,所以家目录对它们来说不是必需的。你遇到的问题完全是因为 su 的用法,而非账户本身的要求。
怎么解决这个报错?
有两个简单的方案:
方案1:去掉
su的-参数
如果你只是想以sysacct的身份执行命令,不需要加载它的登录环境,直接用这个命令就行:su sysacct -c 'mkdir /var/sysacct/test'这样
su不会尝试切换家目录,直接执行指定命令,就不会报错了。方案2:创建账户时指定家目录(如果确实需要登录环境)
如果你因为某些原因必须用su -来模拟登录,那可以在创建账户时手动指定家目录(比如你已经创建的/var/sysacct):useradd -r -s /bin/false -d /var/sysacct sysacct之后再用
su - sysacct -c ...就不会有找不到家目录的问题了。
备注:内容来源于stack exchange,提问作者Kabira K
相关产品推荐
相关产品推荐

