su命令+认证失败

我遇到了su命令的问题。 我知道我的密码,我输入正确,但su表示身份validation失败。

所以我检查了互联网,然后进入恢复模式,并将我的用户名密码更改为我之前输入的内容。

即使现在在su上输入相同的密码也会导致身份validation失败。

请建议我做错了什么?

su要求输入root密码。 由于Ubuntu默认情况下不设置root密码,因此无法使用它成为root用户。

相反,要成为root用户,请使用sudo -i和您的个人密码。

su询问您尝试登录的帐户的密码。 它的用法(简化):

 su username 

省略username ,用户名默认为root 。 由于在Ubuntu上默认禁用root密码,因此没有密码有效。 运行root命令的首选方法不是通过su shell,而是使用sudo,如下所示:

 sudo mount /dev/sdb1 /mnt 

默认情况下,Ubuntu中的root帐户处于禁用状态。 这就是说它没有密码(与密码空白不同)并且不会尝试使用root密码进行身份validation。 因此, susu -将无法正常工作。

相反,使用sudo以root身份运行命令:

 sudo command... 

如果你想要一个像su一样的root shell,运行:

 sudo -s 

如果你想要一个像su -一样的root shell,运行:

 sudo -i 

su要求输入root密码。

您可以在root用户时设置root密码(通过提供sudo su ,假设您在sudoers文件中),通过命令passwd并设置新密码。

不过,出于各种原因,不建议这样做。

在我的情况下,这是因为/etc/shadow缺少该用户的条目。

我已将/etc/passwd中ID大于1000的所有条目与/etc/group一起复制到另一个测试服务器,但忘记了/etc/shadow 。 因此,每当我与任何这些用户做su ,我都会收到该错误。 在/etc/shadow添加缺少的条目后,错误将停止显示。

例如/etc/shadow

 myusername:*:16992:0:99999:7::: 

我遇到了一个操作系统,Minibian,其中/bin/su缺少setuid位,导致此错误,即使启用了root帐户的密码也是如此。

在Linux上,成为root的唯一方法是执行setuid-root文件。 当你运行sudosu ,他们的setuid位被设置,所以进程’有效用户成为root,然后他们已经以root身份进行身份validation! 如果失败则退出。

无论如何,这里是症状和修复:

 $ su Password: su: authentication failure $ sudo su # ls -l /bin/su -rwxr-xr-x 1 root root 31092 Jun 5 2012 /bin/su # chmod u+s /bin/su # ls -l /bin/su -rwsr-xr-x 1 root root 31092 Jun 5 2012 /bin/su 

注意区别: rwx之前, rws之后。

当你需要以非登录用户名登录时说git (没有密码)

 su - git Password: su: Authentication failure 

解决方案 – 使用此语法以userid git身份登录

 sudo su - git