CentOS 7下Authentication failure问题


今天在CentOS中配置Hadoop的时候突然遇到使用普通用户无法切换到root用户的问题,即输入

$ su -
  • 1

提示输入密码后无法切换到root用户,而是提示如下错误:

su: Authentication failure
  • 1

这里写图片描述

好好地怎么出现这个问题了呢,百度了一下午基本上都是这个答案:

这个问题产生的原因是由于ubuntu系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令:

$ sudo passwd root 系统提示输入当前用户密码: 然后输入新的root密码: 确认新密码: 系统提示更新成功,OK! 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

虽然说的都是ubuntu系统,但死马当活马医,姑且照着做吧。

我先登录普通用户,输入

$ sudo passwd root
  • 1

系统提示当前用户不在sudoers中,即没有权限。
那么换成root用户登录。这里要说明一下,我的系统普通用户和root用户分别登录都没有问题,问题是不能通过su命令切换。
在root用户下编辑sudoers文件:

# vim /etc/sudoers 
  • 1
  • 2

在文件中添加如下语句,这里的njupt是我的普通用户:

# Allow njupt njupt ALL=(ALL) ALL
  • 1
  • 2

保存,系统会提示文件是只读的,需要输入!强制保存,照做。

再试试这个命令

$ sudo passwd root
  • 1

发现还是不行,会提示如下错误:

sudo: effective uid is not 0, is sudo installed setuid root?
  • 1

这是因为sudo命令没有S(setuid)权限,因此其他用户执行sudo命令时,报上面错误。可以这样理解setuid权限:当一个具有可执行权限的文件设置SetUID权限后,其他用户执行这个文件时将以这个文件的所有者的身份进行执行。

为sudo命令设置setuid权限

$ chmod u+s  /usr/bin/sudo
  • 1

然后看一下

[njupt@master bin]$ ll | grep sudo -rwsrwxrwx. 1 root root 130720 Mar 6 2015 sudo
  • 1
  • 2

有了S权限以后再试试这个命令

$ sudo passwd root
  • 1

发现提示信息改变了:

[njupt@master bin]$ sudo passwd root sudo: /etc/sudoers is world writable sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
  • 1
  • 2
  • 3
  • 4

这两条是新的错误信息

sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
  • 1
  • 2

这是因为sudoers 文件的权限不对,正常的权限应该是440(r–r—–),我是因为之前瞎折腾的时候修改过这个文件的权限。现在改回来

# chmod 440 /etc/sudoers # ll | grep sudo -rw-r-----. 1 root root 1786 Mar 6 2015 sudo.conf -r--r-----. 1 root root 4035 Sep 10 04:31 sudoers drwxr-x---. 2 root root 6 Mar 6 2015 sudoers.d -rw-r-----. 1 root root 3181 Mar 6 2015 sudo-ldap.conf
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

再一次执行这个命令

[njupt@master bin]$ sudo passwd root [sudo] password for njupt: Changing password for user root. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

successfully!难道这样就可以了?试试

[njupt@master bin]$ su -
Password: 
su: Authentication failure
  • 1
  • 2
  • 3

绝望了好吧。。。

网上还有一种说法,说用这个命令:

$ sudo su
  • 1

代替su命令。我试了一下,确实可以,而且不需要输入root密码,而是要输入普通用户的密码

[njupt@master bin]$ sudo su [sudo] password for njupt: [root@master bin]# 
  • 1
  • 2
  • 3

到此为止切换用户的问题算是解决了,但出现Authentication failure的根本原因还是不知道,而且su命令仍然无法使用。

以前明明是可以的(泪奔~)。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM