为什么sudo-su比sudo su更好?

我在Ask Ubuntu中看到很多关于使用sudo -s而不是sudo su偏好的评论。

对我来说,这两个命令完全相同。 但为什么sudo -s应该更好?

我认为sudo -s不是“更好”,它只是不同。

sudo -s

保留你的$ HOME目录,所以当你启动程序时,他们将使用你的(而不是root的)配置文件等。缺点:他们也可以在$ HOME目录中更改文件的所有权,典型的例子是.Xauthority文件,但我从来没有遇到过这个问题。

sudo susudo -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