非 root 用户将 /root 作为 $HOME

非 root 用户将 /root 作为 $HOME

/etc/passwd我在文件中有以下条目:

daemon:x:2:2:daemon:/sbin:/sbin/nologin

但是,当我似乎将sudo -su daemon$HOME设置为/root

[root@sbecby07 ~]# sudo -su daemon 'echo $USER $HOME'
daemon /root

我已经将sudo usermod -d /sbin daemon其改回/sbin但它仍然指向/root

我也没有找到任何修改 $HOME 的行/etc/profile

我还应该进一步观察哪些方面?

答案1

sudo -s和之间是有区别的sudo -i

您正在使用sudo -s,它不会设置目标用户的资源,包括$HOME变量。它只是加载用户的 shell。

sudo -i将 shell 作为登录 shell 运行,就像一个新的会话,包括设置正确的主页以及加载.profile.login

man sudo参阅详情。


示范

sudo -s您可以在这里看到和之间的区别sudo -i

root@node51 [~]# sudo -s -u deltik echo '$USER' '$HOME'
deltik /root
root@node51 [~]# sudo -i -u deltik echo '$USER' '$HOME'
deltik /home/deltik

答案2

正如已经说过的,sudo -i 是实际为该用户打开登录 shell 的正确命令,该命令然后具有包括 $HOME 设置在内的正确环境。

然而,如果您确实想这么做,您需要在 /etc/passwd 中定义一个有效的登录 shell,因此您应该先将 /sbin/nologin 更改为 - 例如 - /bin/bash。

相关内容