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

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

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

对我来说,这两个命令的作用完全相同。但为什么会sudo -s更好呢?

答案1

我认为sudo -s这并不是“更好”,而只是不同而已。

sudo -s

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

sudo su或者sudo -i

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

答案2

因为sudo -s不会改变你的环境变量,尤其是$HOME,它将保持HOME=/home/USER。如果你使用 ,sudo su它将更改为 ,HOME=/root当你启动的程序尝试访问你的用户的主目录时,这可能会产生负面影响。

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

答案3

除了已经提到的环境变量差异之外,我发现这样做sudo su很愚蠢,也很浪费,因为你要求以 root 身份sudo运行su,并要求它以 root 身份运行 shell。为什么要让一个程序要求另一个程序给你一个 root shell,而你可以让第一个程序给你那个 shell?这在实际意义上重要吗?不,我只是吹毛求疵。

答案4

考虑到您想要以没有 shell 的用户身份登录的情况,我不同意其他答案。这是分配给服务的用户非常常见的情况。

使用“sudo su”将启动用户指定的 shell。但是,如果用户被分配到服务器进程,shell 为 /usr/bin/false,日志记录将失败。您应该输入以下内容:

sudo -sHu <server-user>

即使用户没有分配 shell,它也会将你登录并 cd 到其主路径

相关内容