在本文中,我们将介绍如何配置pam以仅在Linux系统中将su限制为某些用户使用,内容有:建立群组并新增使用者、配置su PAM策略、测试su PAM政策。
前言 将Linux系统上su命令的使用限制为仅特权帐户,例如Admin用户组。su实用程序通过PAM请求适当的用户凭据,然后切换到该用户ID(默认用户是超级用户)。 我们将创建一个组,并将su的使用限制为该组中的用户。PAM用于设置su将使用的策略,可以将其配置为允许不同的用户组通过su访问特定的目标UID。该操作所需的PAM模块是:pam_succeed_if、pam_wheel.so、pam_listfile.so。 在本文结束时我们将完成的工作: 1、创建一个Linux组调用sysadmins。 2、配置PAM以允许来自组权限的用户使用su。 3、使用su切换为其他任何用户都将失败。 参考:Linux系统中的切换用户Su命令,教你如何使用su命令,包括注意事项。
步骤1:建立群组并新增使用者 首先创建两个Linux组,即sysadmins和dbadmins: sudo groupadd sysadmins sudo groupadd dbadmins 创建三个用户,一个名为admin1,另一个称为dbuser1,最后是testuser1: # 创建admin1用户 $ sudo useradd admin1 $ sudo passwd admin1 # 创建dbuser1 $ sudo useradd dbuser1 $ sudo passwd dbuser1 # 创建testuser1 $ sudo useradd testuser1 $ sudo passwd testuser1 将admin1用户分配给sysadmins组: sudo usermod -G sysadmins admin1 将dbuser1用户分配给dbadmins组: sudo usermod -G dbadmins dbuser1 通过检查getent的输出,确认已将用户正确分配到相关组: $ getent group sysadmins sysadmins:x:1001:admin1 $ getent group dbadmins dbadmins:x:1002:dbuser1
步骤2:配置su PAM策略 创建一个新文件/etc/security/su-sysadmins-access文件,并使用su命令添加允许sysadmins组中的用户访问的目标UID: $ sudo vim /etc/security/su-sysadmins-access root 创建另一个文件/etc/security/su-dbadmins-access并添加su命令允许dbadmins组中的用户访问的目标UID: $ sudo vim /etc/security/su-dbadmins-access postgres oracle 将创建的文件的写访问权限限制为仅root用户: sudo chown root:root /etc/security/su-sysadmins-access sudo chown root:root /etc/security/su-dbadmins-access sudo chmod 0644 /etc/security/su-sysadmins-access sudo chmod 0644 /etc/security/su-dbadmins-access 确认权限: $ ls -lh /etc/security/su-sysadmins-access -rw-r--r--. 1 root root 5 Jan 30 10:19 /etc/security/su-sysadmins-access $ ls -lh /etc/security/su-dbadmins-access -rw-r--r--. 1 root root 16 Jan 30 10:20 /etc/security/su-dbadmins-access 通过编辑文件/etc/pam.d/su配置PAM: $ sudo vim /etc/pam.d/su 添加以下行: auth [success=2 default=ignore] pam_succeed_if.so use_uid user notingroup sysadmins auth required pam_wheel.so use_uid group=sysadmins auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/su-sysadmins-access auth [success=2 default=ignore] pam_succeed_if.so use_uid user notingroup dbadmins auth required pam_wheel.so use_uid group=dbadmins auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/su-dbadmins-access 更改意味着什么: sysadmins组(admin1)的成员只能su为root用户。 dbadmins的成员(dbuser1)只能使用postgres和oracle。 这是su文件的样子:
步骤3:测试su PAM政策 以admin1用户身份登录,然后使用su尝试将UID更改为允许的root用户: $ ssh admin1@localhost [admin1@centos ~]$ su - root #enter root user password Password: Last login: Sat Jan 30 10:17:26 UTC 2021 from 172.20.11.12 on pts/0 [root@centos ~]# exit logout 以dbuser1用户身份登录,然后使用su尝试将UID更改为允许的postgres用户: $ ssh dbuser1@localhost $ su - postgres # the user should exist before # Or $ su - oracle 以testuser1用户身份登录并尝试任何su,正常情况下它应该是失败的: $ ssh testuser1@localhost $ su - root $ su - postgres 操作到这里,目的已经达到。
相关主题 |