- required: 必需的
如果一个模块被标记为 required,则该模块必须成功执行。如果该模块失败,系统会记录错误并继续尝试后续的模块。
只有所有 required 模块都成功,整个认证过程才可能成功。
- requisite: 必要的
如果一个模块被标记为 requisite,则该模块必须成功执行。如果该模块失败,认证过程会立即终止并返回失败,不会继续执行后续的模块。
- sufficient: 足够的
如果一个模块被标记为 sufficient,则该模块的成功可以立即导致整个认证过程的成功,前提是之前没有其他 required 或 requisite 模块失败。
如果 sufficient 模块成功,认证过程将不再检查后续的模块。
基本概念
模块(Module):PAM系统中的每个功能单元。每个模块负责处理特定的认证任务。
堆栈(Stack):一系列按顺序调用的模块
控制标志(Control Flag):定义模块在认证过程中的行为,常用的控制标志有 required、requisite、sufficient和optional。
服务名(Service Name):表示需要认证的服务,如login、sshd等。一般以文件名的形式存在。
配置文件
PAM的配置文件通常位于 /etc/pam.d目录下,每个服务有一个对应的文件。例如,/etc/pam.d/login文件用于配置 login 服务的认证策略。
配置文件格式
每个配置文件包含多行,每行定义一个模块及其控制标志。每一行的格式如下:
<module type> <control flag> <module path> <module arguments>
moduel type: 模块的类型,常用的类型有 auth,account,password,session。
control flag: 模块的控制标志,如 required,requisite,sufficient,optional。
module path:模块的路径,通常省略路径,直接写模块名称。
module arguments: 传递给模块的参数。
常用的模块类型
auth: 处理身份验证
account: 处理账户管理,如检查账户是否已过期
password: 处理密码管理,如更改密码
session: 处理会话管理,如登录和注销时的操作
测试和调试
测试配置: 在修改PAM配置文件后,务必测试新的配置以确保其正确性。可以使用 pamtester 工具进行测试。
查看日志: PAM的操作日志通常记录在 /var/log/auth.log 或 /var/log/secure 中,可以通过查看这些日志文件来调试问题。
常见报错
- sshd pam_succeed_if(sshd:auth): requirement “uid >= 1000” not met by user “root”
sudo的时候,需要密码,报错如下: Failed password for root from 10.0.0.41 port 58615 ssh2
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 极客油画 」找到我。

