结合自己的所得,综合了多篇文章,注的是原创,但若侵犯了版权,请与我联系,我将注明转载

插入式验证模块(Pluggable Authentication ModulePAM
是一套共享函数库API,允许系统管理员来决定应用程式如何识别用户.
clip_p_w_picpath002
注意,
应用程序(服务)必须本身是支持PAM认证的,也就是说源码里面使用了PAMAPI
PAM的体现结构如下图
clip_p_w_picpath004
认证模块:
位于/lib/security/和/lib64/security/下,文件名如pam_*.so,例如: pam_access.so
是在其他的UN*X中,你可能会在/usr/lib/security中看到这些文件。
而且模块是可堆叠的,即可以针对一个认证过程调用多个模块进行多种方式的认证,如
/etc/pam.d/samba有如下内容,对于auth这个操作调用了两个认证方式
auth required pam_nologin.so
auth include system-auth
配置文件:
PAM 的主要特征表现为通过 /etc/pam.d 或 /etc/pam.conf(旧版本) 文件实现动态验证配置
一般在/etc/pam.d目录里,需要为程序设一个配置文件.具体的文件名是写死在程序里的.通常和程序名一样,假设程序名字叫"pamprog",配置文件就是/etc/pam.d/pamprog.
PAM 模块是按模块类型归类的。任何给定的模块至少要实现四种模块类型功能之一:
1. 验证模块(auth)用于验证用户或设置/销毁凭证。如提示输入用户名密码
2. 帐户管理模块(account)将执行与访问、帐户及凭证有效期、密码限制/规则等有关的操作。
3. 密码管理模块将执行与密码更改/更新有关的操作。
4. 会话管理模块用于初始化和终止会话。如记录log,挂上某些档案系统等.
PAM 将提供不同的功能,例如单点登录验证、访问控制等。每个功能的实现都是由不同的模块处理的。下面是一些主要模块:
  • pam_access 将使用登录名/域名,根据 /etc/security/access.conf 中的预定义规则交付日志守护进程样式的登录访问控制。
  • pam_cracklib 将根据密码规则检查密码。
  • pam_env sets/unsets 环境变量来自 /etc/security/pam_env_conf。
  • pam_debug 将调试 PAM。
  • pam_deny 将拒绝 PAM 模块。
  • pam_echo 将打印消息。
  • pam_exec 将执行外部命令。
  • pam_ftp 是匿名访问模块。
  • pam_localuser 要求将用户列于 /etc/passwd 中。
  • pam_unix 将通过 /etc/passwd 提供传统密码验证。
更多信息参