此过程说明如何添加、保护和测试新的 PAM 模块。您可能需要将新模块用于特定于站点的安全策略,或用于支持第三方应用程序。要创建 PAM 模块,请参见面向开发者的 Oracle Solaris 11 安全性指南 中的第 3 章 编写 PAM 应用程序和服务。
开始之前
完成规划特定于站点的 PAM 配置中所述的步骤。
您必须承担 root 角色。有关更多信息,请参见在 Oracle Solaris 11.2 中确保用户和进程的安全 中的使用所指定的管理权限。
确保保护模块文件的所有权和权限是 root 所有权和 444 权限。
# cd /opt/pam_modules # ls -lR .: total 4 -r--r--r-- 1 root root 4570 Nov 27 12:34 pam_app1.so.1 drwxrwxrwx 2 root root 3 Nov 27 12:38 sparcv9 ./64: total 1 -r--r--r-- 1 root root 4862 Nov 27 12:38 pam_app1.so.1
32 位模块位于 /opt/pam_modules 目录中,而 64 位模块位于 64 子目录中。
在以下示例中,模块用于新的应用程序 (app1)。其服务名称与应用程序名称相同。在 /etc/pam.d 目录中创建 app1 服务名称文件。该文件中的第一项使 app1 服务能够分配给单个用户。
# cd /etc/pam.d # pfedit app1 ... # PAM configuration # # app1 service # auth definitive pam_user_policy.so.1 auth required /opt/pam_modules/$ISA/pam.app1.so.1 debug
模块路径中的 $ISA 标记根据调用应用程序将 PAM 框架定向到相应的 32 位或 64 位体系结构版本的服务模块。对于 32 位应用程序,/a/b/$ISA/module.so 将变为 /a/b/module.so,对于 64 位应用程序,将变为 /a/b/64/module.so。在本示例中,在 /opt/pam_modules 目录中安装了 32 位的 pam.app1.so.1 服务模块,在 /opt/pam_modules/64 目录中安装了 64 位的模块。
有关更多信息,请参见 pfedit(1M) 和 pam.conf(4) 手册页。
要将 app1 PAM 策略限定到所选用户,请参见Example 1–2。
直接使用 login 或 ssh 登录。然后,运行受新模块影响的命令。分别对允许和拒绝使用受影响命令的用户进行测试。有关故障排除帮助,请参见如何排除 PAM 配置错误。
请参见如何分配修改后的 PAM 策略。
在本示例中,app1 服务并非供所有用户使用,因此管理员可将该服务添加为基于用户的策略。
# cd /etc/pam.d # cp app1 /opt/local_pam/app1-conf # pfedit /opt/local_pam/app1-conf ## app1 service ## app1 auth definitive pam_user_policy.so.1 app1 auth required /opt/pam_modules/$ISA/pam_app1.so.1 debug
管理员将 app1 文件从 pam.d 目录中删除,
# rm /etc/pam.d/app1
然后将 app1-conf 策略添加到系统管理员的 PAM 策略。
# rolemod -K pam_policy=/opt/local_pam/app1-conf sysadmin示例 1-3 使用权限配置文件设置基于用户的 PAM 策略
本示例使用 pam_policy 安全属性对来自不同命名服务的用户进行验证。any PAM 策略文件在 /etc/security/pam_policy 目录中提供。该文件中的注释对此策略进行了描述。
请勿修改此目录中的文件。
# profiles -p "PAM Per-User Policy of Any" \ 'set desc="Profile which sets pam_policy=any"; set pam_policy=any; exit;'
要分配此权限配置文件,请参见如何分配修改后的 PAM 策略。