sudo su - root 和 sudo -u root -H /bin/bash 之间有区别吗?

Dav*_*vid 4 linux bash su sudo

正如标题所说,这两个命令之间有区别吗:

sudo su - root
sudo -u root -H /bin/bash
Run Code Online (Sandbox Code Playgroud)

我正在使用 GNU/Linux,如果这有区别的话。

小智 9

如果您想成为 root,最好的方法是sudo -i,它模拟初始登录(为您提供与 root 登录关联的所有路径和变量)。如果您想在不获取 root 用户.files 的情况下登录,则可以使用sudo su(无需指定 root 用户)。


bsd*_*bsd 7

su - # causes the user to run a login shell aka bash --login
     # the same as if the user had logged in as the root from the login prompt
Run Code Online (Sandbox Code Playgroud)

sudo su -是相同的sudo su - root,指定根是多余的。

sudo -u root -H /bin/bash再次-u root是多余的,sudo默认情况下以 root 身份运行,但-H /bin/bash作为 sudoer 运行,环境变量 SUDO_USER、SUDO_UID 和 SUDO_COMMAND 分别设置为调用者名称/uid 和 bash。

但在这种情况下,bash 不会作为登录 shell 运行。


Net*_*tch 3

显然,如果 root shell 不是 /bin/bash,它们可能会有所不同 - 这对于微型或嵌入式 Linux 环境是可能的,或者对于 root 用户更喜欢 /bin/[t]csh 的传统 BSD 系统来说是可能的。另外,“su -”会删除除与终端相关的一些变量之外的所有环境。sudo 在环境中的行为是可配置的(请参阅 /etc/sudoers 中的 env_reset)。所以,一定要注意细节...