pam.conf
service-name module-type control-flag module-path args
pam.d
每个服务独立文件
module-type
- auth 认证用户
- account 实现一些非基础认证功能,比如"root"只能从控制台登录
- session 为用户提供服务前的准备工作, 比如记录用户登录信息,挂载用户目录等
- password 更新认证token,如更改密码
control-flag
- required 同是required都要求执行,一个失败其他都失败
[success=ok new_authtok_reqd=ok ignore=ignore default=bad]
- requisite 和required 相似, 其中一个失败便返回结果
[success=ok new_authtok_reqd=ok ignore=ignore default=die]
- sufficient 成功则返回, 在之前的required 模块都必须成功
[success=done new_authtok_reqd=done default=ignore]
- optional 没有返回结果
[success=ok new_authtok_reqd=ok default=ignore]
更详尽的语法
[value1=action1 value2=action2 ...]
values
- success
- open_err
- symbol_err
- service_err
- system_err
- buf_err
- perm_denied
- auth_err
- cred_insufficient
- authinfo_unavail
- user_unknown
- maxtries
- new_authtok_reqd
- acct_expired
- session_err
- cred_unavail
- cred_expired
- cred_err
- no_module_data
- conv_err
- authtok_err
- authtok_recover_err
- authtok_lock_busy
- authtok_disable_aging
- try_again
- ignore
- abort
- authtok_expired
- module_unknown
- bad_item
- default
actions
- ignore 忽略执行结果
- bad 如果失败,结果被用于整个执行栈
- die 和bad相似, 但是失败直接返回结果,后续栈不执行
- ok 如果PAM_SUCCESS 覆盖之前值
- done 和ok 相似, 但是栈直接返回结果
- reset 重置栈当前状态