为什么sudo-su比sudo su更好?
我在Ask Ubuntu中看到很多关于使用sudo -s
而不是sudo su
偏好的评论。
对我来说,这两个命令完全相同。 但为什么sudo -s
应该更好?
我认为sudo -s
不是“更好”,它只是不同。
sudo -s
保留你的$ HOME目录,所以当你启动程序时,他们将使用你的(而不是root的)配置文件等。缺点:他们也可以在$ HOME目录中更改文件的所有权,典型的例子是.Xauthority
文件,但我从来没有遇到过这个问题。
sudo su
或sudo -i
程序将使用root的主目录及其配置文件。 这可能更直观,但也意味着它不会使用您可能为自己设置的任何配置(别名,bash历史记录……)。
因为sudo -s
不会改变你的环境变量,特别是$HOME
,它将保留HOME=/home/USER
。 如果您使用sudo su
这将更改为HOME=/root
,当您启动的程序尝试访问用户的主目录时,这可能会产生负面影响。
所以基本上它就像运行图形程序时的sudo
vs gksudo
。
除了已经提到的与环境变量的差异之外,我发现sudo su
傻和浪费,因为你要求sudo
以root身份运行su
,并要求它以root身份运行shell。 为什么要求程序让程序给你一个root shell,当你可以让第一个程序给你那个shell时? 在任何实际意义上,这有关系吗? 不,我只是迂腐。
当您想要以没有shell的用户身份登录时,我会不同意其他答案。 这是分配给服务的用户的一种非常常见的情况。
使用“sudo su”将启动用户指定的shell。 但是,如果将用户分配给服务器进程,则shell为/ usr / bin / false,并且日志记录将失败。 相反,你应该输入:
sudo -sHu
这将使您登录并cd到其主路径,即使用户没有分配shell