为什么不起作用su
但sudo -i
可以?当我想通过 via 成为 root 时su
,系统不接受我的密码,但 viasudo -i
它可以工作。
su: Authentication failure
答案1
简短的答案可以在 sudoers 手册页中找到(键入man sudoers
以查看完整页面):
Unlike su(1), when sudoers requires authentication, it validates
the invoking user's credentials, not the target user's (or root's)
credentials.
sudo
询问您的密码也是如此,并且su
询问 root 密码。
长答案
su
方法更改用户,例如,以该用户身份启动 shell。您可以指定哪个用户,例如su someuser
.然后系统会提示someuser
您输入 的密码。如果不指定用户,则su
默认为 root 用户。因此,当您输入 时su
,它会要求输入 root 密码。
sudo
方法,以另一个用户身份运行命令,sudo -i
表示以另一个用户身份运行登录 shell。您可以指定哪个用户,但如果不这样做,则默认为 root。应用安全策略su
,而不是像那样期望其他用户的密码。sudo
默认的安全策略是检查文件/etc/sudoers
。该文件的默认版本包括:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
这意味着,如果用户在该sudo
组中,则可以以任何用户身份运行任何命令。如果sudo -i
对您有用,可能是因为您自己的帐户位于 sudo 组中。但在sudo
执行命令之前,它会要求你的再次输入密码——不是 root 用户的密码。
答案2
设置/更改root密码:
sudo passwd root
然后你就可以运行su
命令了。