为什么root在执行特定命令时需要输入密码?

为什么root在执行特定命令时需要输入密码?

在某台 RHEL5 机器上,当 root 执行诸如passwd someuser或任何其他特权命令之类的命令时,需要输入 root 密码进​​行验证,没有密码就无法执行该命令。

例子:

# id
uid=0(root) gid=0(root)  
groups=0(root),10(wheel)
# passwd someuser
Password:(need to enter root verification password to proceed)
New user password:
Retype new password:
  • 文件中存在 root 用户,/etc/sudoers如下所示:

    root ALL=(ALL) ALL
    
  • 、 、、、、 、、/etc/pam.d/等中的所有基本文件与另一台机器上的文件相同,但行为方式不同。loginpasswdpassword-authpassword-auth-acsystem-auth-acsystem-authsudosudo-l

  • SElinux 被禁用。

  • /etc/nsswitch.conf没有变化,与其他机器一致。

    passwd:         files ldap 
    group:          files ldap 
    shadow:         files ldap 
    hosts:          files dns
    networks:       files
    protocols:      files
    services:       files
    ethers:         files
    rpc:            files
    netgroup:       files
    sudoers:  files ldap
    
  • 执行 passwd 命令时,从日志文件中看不到太多信息,如下所示:

    /etc/log/secure- 空(不幸的是我不允许接触 rsyslog)

    /etc/log/auth.log

    sshd[xxxxx]:  Accepted keyboard-interactive/pam for root from 127.0.0.XX port XXXXX ssh2
    sshd[xxxxx]:  pam_unix(sshd:session): session opened for user root by (uid=0)
    
  • 当直接(不使用 ssh)连接到控制台时,也会发生同样的情况。

有人经历过类似的行为吗?

或者您能否推荐任何可以帮助查找问题原因的调试标志或方法?

答案1

这很可能与您的 pam 配置有关。我不确定在 RHEL 5 中是否完全相同,但在 RHEL 6 中,默认情况下,对于 UID < 500 的用户,帐户身份验证会成功,因为/etc/pam.d/system-auth包含以下行:

account     sufficient    pam_succeed_if.so uid < 500 quiet

与 RHEL 上的其他身份验证相关工具一样,/usr/bin/passwd使用 pam 和/etc/pam.d.

/etc/pam.d/system-auth通过运行yum reinstall pam/etc/pam.d/system-auth从 rpm 中提取来恢复可能是最安全的选择。现有system-auth文件可能不会被覆盖,而是写入为system-auth.rpmnew.

答案2

首先,感谢大家的帮助。

生成新的 ssh 密钥后问题得到解决:

# ssh-keygen -t rsa

我发现authorized_keys2和id_rsa.pub文件之间存在差异,从而生成了新的密钥。老实说,我不知道它可以解决问题,因为我不再怀疑 ssh,因为我注意到控制台连接上也发生了问题。

相关内容