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


28

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

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


1
我认为sudo -isudo su优于sudo -s这里提到的原因:ubuntuforums.org/showpost.php?p=6188826&postcount=4另外:这可能是superuser.com/questions/29/…的
安排

我认为这个问题应该移到unix.stackexchange.com
igi 2011年

Answers:


26

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

sudo -s

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

sudo su 要么 sudo -i

程序将使用根目录的主目录及其配置文件。这可能更直观,但这也意味着它将不使用您可能为自己设置的任何配置(别名,bash历史记录...)。


1
好吧,我现在明白了区别。谢谢!
fitojb 2011年

1
“ sudo su”不等同于“ sudo -i”。“ sudo -i”等效于“ sudo su-”,但“ sudo su-”保留当前工作目录,而“ sudo -i”将您移至root的家
Gregory Pakosz 2012年

13

因为sudo -s不会改变您的环境变量,尤其是$HOME将保持不变HOME=/home/USER。如果使用sudo su此选项,将HOME=/root在启动程序时尝试访问用户的主目录,从而产生负面影响。

所以基本上它就像sudoVS gksudo运行图形程序时。


5

除了已经提到的与环境变量的区别之外,我还觉得sudo su很愚蠢和浪费,因为您要求sudosuroot 身份运行,并要求它以root身份运行shell。当您可以让第一个程序给您该shell时,为什么要让一个程序要求一个程序给您一个root shell?从实际意义上讲这有关系吗?不,我只是书呆子。


没错,这有点多余。
fitojb 2011年

好吧,并非完全如此:例如,如果您习惯sudo su成为root用户,那就去吧sudo -i。但是,当您想成为其他用户时,它确实有帮助:sudo su - myuser
hggdh 2011年

2
还有另一个区别:sudo -i将更改为/root目录并sudo su保留在您所在的目录中。
laurent

1
@hggdh, sudo -u myuser
psusi 2011年

3

在考虑要以没有外壳程序的用户身份登录的情况时,我不同意其他答案。对于分配给服务的用户,这是很常见的情况。

使用“ sudo su”将启动用户指定的外壳。但是,如果将用户分配给服务器进程,则外壳程序为/ usr / bin / false,并且记录将失败。相反,您应该输入为:

sudo -sHu <server-user>

即使您没有分配外壳程序,也可以登录并进入其主目录

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.