我无法使用su命令以root用户身份登录,但可以使用SSH登录


17

我怎么可能无法通过root su root或身份登录su(出现错误的密码错误),但是却可以通过ssh root@localhostssh root@my_local_IP使用相同的密码登录?

我正在使用CentOS 6.4。


更新1

cat /etc/pam.d/su

给出:

#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

Update2

$ sudo grep su /var/log/secure | grep -v sudo

给出:

Feb 23 13:12:17 fallah su: pam_unix(su:auth): authentication failure;
logname=fallah uid=501 euid=501 tty=pts/0 ruser=fallah rhost=  user=root

重复约20次。


1
尝试清除文件/etc/securettycp /etc/securetty{,.old}; : > /etc/securetty)。如果仍然不起作用,请提供的内容/etc/pam.d/su
Patrick

2
当然,ssh 192.168.1.218您只是以自己的身份登录?以root身份登录ssh通常需要ssh root@192.168.1.218ssh root@localhost
Graeme 2014年

1
获取外壳程序(echo $$)的PID(12345),打开(例如,通过ssh)根外壳程序(跟踪SUID二进制文件是必需的)并启动strace该外壳程序:strace -o su.strace -p 12345 -f并在错误消息之前查找奇怪的错误。如果您不熟悉这种输出,或者将错误消息之前的最后30行复制到您的问题中。
Hauke Laging

1
@HaukeLaging它说Process 11736 attached - interrupt to quit
Alireza Fallah

2
好的,这就是它不起作用的原因。/ bin / su需要打开其setuid位,以便普通用户(非root用户)使用它时,可以访问/ etc / shadow中的密码列表。以root用户chmod 4755 /bin/su身份输入以解决此问题。
Mark Plotnick

Answers:


23

在您的评论中,您说/bin/su具有以下模式/所有者:

-rwxrwxrwx. 1 root root 30092 Jun 22 2012 /bin/su

这里有两个问题。

  • 它需要启用set-uid位,以便它始终以root权限运行,否则,当普通(非root)用户运行它时,它将无法访问密码信息,/etc/shadow也无法设置密码。userid所需的新用户。

  • 它应该关闭groupother写入位,以便其他用户无法更改它。

要解决此问题,请以root-您说过可以使用ssh- 登录,然后输入

chmod 4755 /bin/su

或者,

chmod u+s,g-w,o-w /bin/su

chmod标准文档详细介绍了它所采用的参数类型。)这会将模式位恢复为首次安装操作系统时的方式。当您列出此文件时,它应如下所示:

-rwsr-xr-x. 1 root root 30092 Jun 22 2012 /bin/su

如@ G-Man所述,模式777的文件可能会被不受信任的用户覆盖,如果是这种情况,您可能希望从分发介质或备份中重新安装它们。


1
我通常这样使用:chmod 755 /bin/su,额外的4代表什么?
Alireza Fallah 2014年

4一个位置的代表set-uid权限。我已经编辑了答案,以添加另一种使用chmod的方式,该方式使用符号名作为权限位。希望那会更加清楚。
Mark Plotnick

非常非常感谢你。我现在发现我chmod -R 777 /bin是错误地执行了,这就是为什么我被诅咒了:D
Alireza Fallah 2014年

我还问了 另一个问题,请问一下,也许您知道答案。
Alireza Fallah 2014年

cyberciti.biz/tips/…描述了如何使用rpm还原文件权限,但是我还没有尝试过。
Mark Plotnick 2014年

10

1.轮组?

这可能是因为您的useid不在wheel组中。在Red Hat发行版上,您可以明确禁止不在该组中的用户运行该su命令。

这是su默认情况下的PAM配置:

$ more /etc/pam.d/su
#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

此行可以将对su命令的访问限制为该wheel组中的用户:

auth        required    pam_wheel.so use_uid

从它的声音来看,它已启用,并且您的用户标识不允许操作该su命令。

SSH之所以有效,是因为它采用了不同的PAM机制。SSH还具有自己的功能,也可以限制对root登录的访问。默认情况下,通常至少在大多数Red Hat发行版中都允许root登录。

$ sudo grep PermitRoot /etc/ssh/sshd_config 
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".

即使以上内容已被注释掉,它也是默认设置,也是OpenSSH如何显示它是配置中的默认设置。

使用这个吗?

如果系统是这样配置的,则可以将用户名添加到wheel组中。

$ useradd -G wheel saml

注销并重新登录后:

$ groups
saml wheel

注意:我的用户名是上面的“ saml”。

2.对su权限?

检查可执行文件是否由root拥有。

$ type -a su
su is /usr/bin/su
su is /bin/su

$ ls -l /usr/bin/su /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /usr/bin/su

还要确认可执​​行文件已s启用其位。这使它们成为setuid,以便在执行它们时以它们自己的root用户身份运行。

3.日志怎么说?

当您尝试执行该su -命令时,应该会看到/var/log/secure有关尝试的条目。

$ sudo grep su /var/log/secure | grep -v sudo
Feb 23 23:31:26 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=0)
Feb 24 00:27:32 greeneggs su: pam_unix(su-l:session): session closed for user root
Feb 24 01:34:12 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=1000)
Feb 24 01:34:26 greeneggs su: pam_unix(su-l:session): session closed for user root

查阅此日志以查看是否获得任何其他信息。

4.您确定密码不是问题吗?

当我尝试使用登录su -时,输入错误密码会得到以下提示:

$ su -
Password: 
su: Authentication failure
$

我会尝试创建另一个帐户,然后查看该辅助帐户是否可以su -成功运行。


感谢您的出色回答,我在阅读您的回答后尝试了什么:usermod -a -G wheel my_username,结果groupsfallah wheel。所以,cat /etc/pam.d/su现在的结果在我的问题中,并且,再次,我无法通过su命令以root用户身份登录!
Alireza Fallah 2014年

这是最后一行/var/log/secureFeb 24 10:19:45 fallah su: pam_unix(su:auth): authentication failure; logname=fallah uid=501 euid=501 tty=pts/2 ruser=fallah rhost= user=root
Alireza Fallah 2014年

而此行在/var/log/secure
Alireza Fallah中

4:但是当我尝试:su: incorrect password -且密码正确时,因为我可以在SSH中使用相同的密码登录
Alireza Fallah 2014年

我也尝试使用另一个帐户登录,例如su alireza和,再次出现相同的问题
Alireza Fallah 2014年

0

如果您收到这样的错误消息

su: PAM adding faulty module: /lib64/security/pam_tally.so
su: PAM unable to dlopen(/lib64/security/pam_tally.so): /lib64/security/pam_tally.so: cannot open shared object file: No such file or directory

执行以下步骤:

ln -s /lib64/security/pam_tally2.so /lib64/security/pam_tally.so

然后尝试su。它应该工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.