• 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命令仍然无法使用。

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

  • 相关阅读:
    设计模式之-工厂模式、构造函数模式
    发布订阅小示例
    使用vue,react,angular等框架和不使用框架使用jquery的优缺点
    react优化--pureComponent
    Vue、 React比较
    ORACLE触发器和new、old特殊变量
    mysql的存储过程与自定义函数
    MySQL日期
    php(Personal Home Page)简介,安装和配置(apache服务器使用和配置1)
    话谈html语义化
  • 原文地址:https://www.cnblogs.com/telwanggs/p/13707646.html
Copyright © 2020-2023  润新知