如何通过设置PAM实现控制'su‘的访问?
解决方法:

在开始之前需要记录以下内容:

  • 测试应该在测试服务器上完成,因为操作可能把服务器锁住。
  • 本文内容的设置仅仅作为测试,而不是一个完整的安全设置,而应该仅仅作为示例

添加两个用户: testuser1和testuser2,添加两个组:suroot和redgroup:

#useradd testuser1
#useradd testuser2
#groupadd suroot
#groupadd redgroup

备份/etc/pam.d/su:

#cp /etc/pam.d/su /etc/pam.d/su.bak

在/etc/pam.d/su中pam_stack.so后面添加以下内容:


auth       required     /lib/security/$ISA/pam_stack.so service=system-auth
auth       sufficient   /lib/security/$ISA/pam_stack.so service=suroot-members
auth       sufficient   /lib/security/$ISA/pam_stack.so service=redgroup-members
auth       required     /lib/security/$ISA/pam_deny.so

创建文件/etc/pam.d/suroot-members,内容如下:

auth       required     /lib/security/pam_wheel.so use_uid group=suroot
auth       required     /lib/security/pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/sumembers-access

创建/etc/pam.d/redgroup-members,内容如下:

auth       required     /lib/security/pam_wheel.so use_uid group=redgroup
auth       required     /lib/security/pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/redgroup-access

创建文件/etc/security/sumembers-access,在该文件中添加用户,例如testuser1。添加到该文件的用户将是suroot组中的唯一允许使用su命令改变身份为root,backupuser和operator的用户。

创建文件/etc/security/redgroup-access,添加到该文件的用户将是redgoup中唯一允许使用su命令改变身份为:dbuser和dbbackupuser。