有以下行:
auth required pam_env.so
文档说:
第一个模块运行,
pam_env
,可以选择设置或清除 中指定的环境变量/etc/security/pam_env.conf
。该模块是必需的 - 它必须成功运行才能继续进行身份验证。
—实用 UNIX 和 Internet 安全,第三版 作者:Simson Garfinkel、Gene Spafford、Alan Schwartz / 可插入身份验证模块 (PAM)
伟大的! “运行成功”到底意味着什么?我知道它加载变量/etc/security/pam_env.conf
(顺便说一下,在 CentOS 和 Ubuntu 中,所有行都被注释掉了)。请您解释一下这到底是什么意思?
这个模块怎么会运行不成功呢?或者只是加载变量,这与身份验证有什么关系?
我读过pam.conf
联机帮助页:
必需的
这种 PAM 的失败最终会导致 PAM-API 返回失败,但只有在剩余的堆叠的模块(为此服务和 类型)已被调用。
也许,我错过了一些东西,但它没有告诉我关于这个话题的任何事情。
总而言之,为什么类型是 auth,而不是 session?
答案1
手册pam_env
页说:
RETURN VALUES
PAM_ABORT
Not all relevant data or options could be gotten.
PAM_BUF_ERR
Memory buffer error.
PAM_IGNORE
No pam_env.conf and environment file was found.
PAM_SUCCESS
Environment variables were set.
此外,如果您的系统已严重损坏,pam_env.so 本身可能无法运行(例如文件系统损坏,或 32 位内核上的 64 位二进制文件),并且将返回错误值。
它位于堆栈中的原因auth
是后续 PAM 模块可能依赖于已设置的内容(这就是它的原因required
)。