/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。