su和sudo何时使用不同的密码?


12

我可以使用来运行任何东西sudo;我的密码被接受了。但是,每当我尝试su从shell进行操作时,它都会失败:

su:密码错误

可能是什么问题?

Answers:


22

su表示替代用户,如果不带任何参数调用它,您将成为超级用户。因此,您必须输入root密码。

如果许多人需要使用命令来进行系统管理或具有扩展用户权限的类似内容,那么这是不方便的。您只是不希望人们通过共享所有相同的root密码来拥有无限的权利。

解决这类问题的方法是sudo(“ 替代用户做 ”)。这将允许您指定某人可以调用的命令并定义权限。因为sudo您不必输入root密码,而是要尝试调用sudo命令的用户的密码。

某些发行版出于安全原因而禁用了root用户。这可能是为什么您无法使用的一种解释su。在这种情况下,要获得具有root特权的shell,请使用sudo -s;-)


5
建议做最后一点,sudo su -因为破折号表示根据用户(在本例中为root)的登录配置文件设置环境。这通常会稍微增加PATH安全性,但仍然无法防范echo hi > /dev/my_critical_filesystem
msw

aaah忘记了这个:-)谢谢!
echox 2010年

@echox:那么,$ script和之间有什么区别$ sudo script吗?在两种情况下,用户都是相同的。
Lazer

sudo allows a permitted user to execute a command as the superuser or another user, as specified in the sudoers file.-来自人须藤。通常,该脚本将使用root特权来调用。那是区别。
echox 2010年

1
@Chris:不幸的是,如果要继承整个root用户环境(包括其PATH),这是必需的。顺便说一句,我刚刚发现上面评论过的“ sudo -s”更像是“ sudo su”,没有破折号:CWD不变,PATH不变。
沃伦·杨

7

不带选项的su命令将默认允许您成为root用户。它不是在询问您的密码,而是在询问root密码。

sudo命令总是要求您输入密码。


2
附带说明,如果您使用Ubuntu,则默认情况下已锁定了root密码,因此您可能不知道root密码help.ubuntu.com/community/RootSudo
phunehehe 2010年

3
“ sudo命令总是要求您输入密码。” 实际上,这是可配置的。它还可以配置为询问root密码或目标用户的密码(或根本不要求密码)。
sepp2k 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.