似乎没有任何区别。运行 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 -i
su -
sudo -i
su -
sudo -i
su
如果您运行以下命令:
$ 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
,除非你知道自己在做什么。