sudo -i 和 su 有什么区别?

sudo -i 和 su 有什么区别?

似乎没有任何区别。运行 whoami 或 id 命令时,它们都会产生 root 凭据。这是错觉吗?如果 Ubuntu 中默认禁用 root 帐户,因此 su 会出现身份验证错误,那么为什么允许 sudo -I

编辑:对不起,我所了解的唯一区别是 sudo -I 要求输入调用该命令的用户的密码,而 su 要求输入 root 或其他目标用户的密码。

还有其他区别吗?

答案1

已编辑。笔记:自上次基于 Eliah Kagan 的评论进行迭代以来,这个答案已经被大量编辑。

sudo -i以 root 权限运行登录 shell,模拟初始登录时使用 root,操作类似于。和su -之间的主要区别在于可以使用 sudoer 的密码执行,而必须使用 root 帐户的密码执行。 因此,如果您使用的是默认的 *buntu 安装,其中 root 登录被禁用,则可以使用而 其变体则不能。sudo -isu -sudo -isu -sudo -isu

如果您运行以下命令:

$ sudo -i
[sudo] password for <username>: <enter user's password>
# cd ~
# pwd

你将获得输出:

/root

因此,您可以看到sudo -i模拟初始 root 登录,包括将主文件夹 ( $HOME) 更改为 root 的,而不是您自己的。这也意味着sudo -i读取登录文件,如.profile

同时,sudo -s启动一个新的 shell,但不模拟初始登录 - 不会读取登录文件,并且$HOME仍然设置为您的用户的主文件夹。

如果您运行以下命令:

$ sudo -s
[sudo] password for <username>: <enter user's password>
# cd ~
# pwd

你将获得输出:

/home/<username>

从中你可以sudo -s看出不是模拟初始登录,并且不会改变$HOME

答案2

sudo -i尝试成为您使用其密码的用户,它会运行该用户登录的特定资源(.profile等)并尝试从用户的主目录运行。

su另一方面帮您登录与其他用户一样,在其他用户的主目录中。并且帐户登录特定资源将运行。默认情况su下,您以 身份登录root

我建议使用sudo -i超过su,除非你知道自己在做什么。

相关内容