我想在这里先举一个例子,以便更容易地表达我的问题。
我已取消注释 /etc/pam.d/su 文件中的以下行
auth required pam_wheel.so use_uid
因此,用户必须是wheel组的成员才能运行该su
命令。然后我尝试了以下操作:
[ssam@centos ~]$ su
Password:
su: incorrect password
这里的用户ssam
是不是是wheel组的成员,因此访问被拒绝,事情应该如此!但我感觉这里显示的错误信息有点不合适,因为我确实输入了正确的root密码。对于一些真正的用户来说,需要一段时间才能弄清楚实际问题是什么(希望如此)。
在上述情况和一般情况下,对 Linux 系统进行故障排除时,第一步应该从什么开始?
答案1
仔细检查配置
这是您首先要确保正确的事情。它也是最有可能造成任何错误的原因。是的,任何软件都存在错误,但是类似的东西
su
使用得如此之多,以至于您更有可能错误配置了系统,而不是代码中存在错误。检查系统日志(实际上与上一步同时进行)
以详细模式运行相关应用程序
strace
,ltrace
gdb
, 源代码
由于多种原因,错误消息常常具有误导性。一是他们经常合并代码中的不同路径。其次,特别是对于安全敏感的应用程序,例如su
,sudo
或者ssh
这样做是为了向攻击者提供更少的提示。然而,在这种特殊情况下,我相信 PAM 架构应该归咎于我们su
调用一个返回错误代码的函数,这意味着身份验证失败。由于历史原因,这被认为是密码不匹配(请注意,我在编写此内容时没有查看实际代码,因此请随意说服我)。