而让其他组的用户即使执行,验证时PAM-API会按照

2019-12-01 05:18 来源:未知

昨天遇到一个很奇怪的事情,有一台服务器在使用su

root命令切换到root账号时,老是报密码不正确。但是root密码完全是正确的,而且可以使用账号密码直接ssh登录服务器。很是纳闷,如下所示:

 

 

[oracle@DB-Server ~]$ more /etc/redhat-release 

Red Hat Enterprise Linux Server release 5.7 (Tikanga)

[oracle@DB-Server ~]$ su - root

Password: 

su: incorrect password

[oracle@DB-Server ~]$ 

 

 

永利平台娱乐 1

 

 

后面Google搜索了一些资料,然后测试、验证后才弄明白了具体原因。在Linux中为了更进一步加强系统的安全性,很有必要建立了一个管理员的组,只允许这个组的用户来执行“su -”命令登录为root用户,而让其他组的用户即使执行“su -”、输入了正确的root密码,也无法登录为root用户。在UNIX和Linux下,这个组的名称通常为“wheel”。而这个是在配置文件/etc/pam.d/su里面配置的。如下截图所示:

 

"auth   required     pam_wheel.so use_uid"    表示禁止非wheel组用户切换到root。所以就出现了上面在oracle用户下切换root用户报密码错误的情况

 

 

[root@DB-Server ~]# groups oracle

oracle : oinstall dba

[root@DB-Server ~]# cat /etc/pam.d/su

 

 

 

永利平台娱乐 2

 

 

 

Wheel组概念 

 

Wheel组是Unix系统一个遗留物。当服务器需要做比日常例行维护更高级的工作的时候,就经常需要用到root权限了。而这个wheel组就是建立用来归纳一些特殊的系统用户用的,这其中的用户都或多或少地拥有root的部分功能和权限。也就是说如果你不是wheel组成员,那就没有root身上任何的特权。也因为这样,使用wheel组成员用户的话,会尽量减少对系统“摧毁性”破坏的概率和风险。如今大多数的Linux发行版本中,仍然保留了wheel这个组,虽然它已经不像当初设计出来的那样必要了,但是有些老玩家还是忠于这种旧式经典风格的,所以他们经常还是依旧让wheel组发挥着以往的作用。他们是这样做的:在建立他们自己的用户时,将其添加入wheel组中(用wheel组作为用户的主组),或者使用vigr来编辑/etc/group文件,将他们的用户名追加到wheel组那行的末尾。

 

 

为什么需要wheel组?

 

通常在UNIX下,即使我们是系统的管理员,也不推荐用 root 用户登录来进行系统管理。一般情况下用普通用户登录,在需要 root 权限执行一些操作时,再 su 登录成为 root 用户。但是,任何人只要知道了 root 的密码,就都可以通过 su 命令来登录为 root 用户——这无疑为系统带来了安全隐患。所以,将普通用户加入到 wheel 组,被加入的这个普通用户就成了管理员组内的用户,但如果不对一些相关的配置文件进行配置,这个管理员组内的用户与普通用户也没什么区别——就像警察下班后,没有带枪、穿这便衣和普通人(用户)一样,虽然他的的确确是警察。这个对于系统安全确实很有帮助。

 

1:查看wheel组

 

[root@DB-Server ~]# cat /etc/group | grep wheel

wheel:x:10:root

[root@DB-Server ~]# groups oracle  --查看某个用户的用户组

oracle : oinstall dba

 

2:检查日志发现那些做了su切换的日志信息。

 

[root@DB-Server ~]#  grep su /var/log/secure | grep -v sudo

Jun 20 11:32:46 DB-Server su: pam_unix(su-l:session): session opened for user oracle by root(uid=0)

Jun 20 11:32:53 DB-Server su: pam_unix(su-l:auth): authentication failure; logname=root uid=500 euid=0 tty=pts/2 ruser=oracle rhost=  user=root

Jun 20 11:33:07 DB-Server su: pam_unix(su-l:auth): authentication failure; logname=root uid=500 euid=0 tty=pts/2 ruser=oracle rhost=  user=root

Jun 20 11:33:20 DB-Server su: pam_unix(su-l:session): session closed for user oracle

[root@DB-Server ~]#

 

解决方法也很简单,要么将对应的账号加入wheel组,要么注释掉配置文件/etc/pam.d/su中的"auth   required     pam_wheel.so use_uid" 那一行记录。

 

 

参考资料:

 

 

 


 

  这篇文章较详细

打开/etc/pam.d/目录下的任何一个配置文件,其中每行的验证规则都使用如下所示的语法格式:
    Type  Control-flag  Module-path  Module-arguments
    其中每行代表一个独立的验证方式,每个配置文件可以由多种验证规则相互叠加而成。验证时PAM-API会按照从上往下的方式一一读取这些验证规则,并根据其中的控制标志做出相应的动作。

required    某个失败,继续往下,直到所有完成后。
requisite    某个失败,所有结束
sufficient    某个成功,所有结束

    验证服务模块-用于授予用户访问帐户或服务的权限。提供此服务的模块可以验证用户并设置用户凭证。

    帐户管理模块-用于确定当前用户的帐户是否有效。提供此服务的模块可以检查口令或帐户的失效期以及限时访问。

    会话管理模块-用于设置和终止登录会话。

    口令管理模块-用于强制实施口令强度规则并执行验证令牌更新。

[root@84-monitor pam.d]# cat sshd
#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth

[root@84-monitor pam.d]# cat password-auth-ac
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_永利平台娱乐,first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

TAG标签:
版权声明:本文由永利平台娱乐发布于关于我们,转载请注明出处:而让其他组的用户即使执行,验证时PAM-API会按照