pam由一个与指令相同文件名的配置文件来进行一连串认证需求。以passwd为例来分析pam调用过程:
1.用户开始执行/usr/bin/passwd指令,并输入密码
2.passwd调用pam模块进行验证。
3.pam模块会到/etc/pam.d/下找寻与指令同名的配置文件
4.依据指令同名的配置文件内的设定,引用pam模块进行逐步验证分析、
5.将验证结果返回给指令
6.指令根据返回结果决定下一个动作
[root@localhost ~]# cat /etc/pam.d/passwd
#%PAM-1.0 -----版本信息
1 2 3
auth include system-auth
account include system-auth
password substack system-auth
password optional pam_gnome_keyring.so
passwd指令pam验证模块的文件结构,以上每一行都是一个独立的验证流程,每一行分三个字段,分别问验证类别(type)、控制标准(flag)、pam模块与模块参数。
1.验证类别(type):
auth:主要用于检验使用者的身份验证,通常需要密码来检验的
account:主要用于检测使用者是否具有相关权限
session:通常用于记录登录者登入与注销信息
passwd:用于变更密码
2.控制标志:验证通过标准
required:次验证成功返回success标志,失败这返回false标志,不论成功或者失败都会进行后续验证
requisite:若验证失败则返回false标志,并停止后续验证,如果成功,则返回success标志并继续后续流程验证
sufficient:与requisite恰好相反
optional:用于显示信息
pam模块相关的配置文件
/etc/pam.d/* 每个指令个别的pam配置文件
/etc/security/* 其他pam环境的配置文件
/lib/security/* pam模块文件实际放置目录
实例:控制libo用户不能再tty4终端登录
1.修改/etc/pam.d/login文件,新增account required pam_access.so,如下图所示:
2.修改/etc/security/access.so,新增-:t:tty4,如下图所示 :