/etc/pam.d/common-auth
成功配置 Kerberos 后,我在文件中找到以下内容:
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
控制值是否success=2
意味着如果pam_unix.so
失败,认证是跳到该auth requisite pam_deny.so
行还是跳到最后一行?
答案1
据我了解,success=$num
将指定成功时要跳过多少条规则。因此,如果pam_unix.so
或pam_winbind.so
成功,PAM 将跳到最后一行。当然,最后一行在所有情况下都允许访问。
答案2
对于更复杂的语法,有效的控制值具有以下形式:
[value1=action1 value2=action2 ...]
actionN 可以是:无符号整数 n,表示“跳过堆栈中的下 n 个模块”的操作
common-auth 的内容如下:
- 如果本地 UNIX 身份验证返回成功,跳过两个模块到第 4 个模块(模块 1 + 2 个要跳过的模块 -> 模块 4)。否则忽略本地认证的结果并转到下一个模块。
- 如果使用 kerberos 身份验证的 winbind(现已被 sssd 取代)返回成功,跳转一个模块到模块 4。否则忽略本地认证的结果并转到下一个模块。
- 拒绝身份验证请求。结果最终确定为 DENIED,并且 PAM 在此处停止(为必要控制定义的操作)。
- 全部允许。结果最终确定为允许,但转到下一个模块(为所需控制定义的操作)。但是没有剩余模块要执行,因此到此结束。