pam.conf / pam.d / *文件中的“ success = n”控制语法


16

成功配置Kerberos之后,这是我在/etc/pam.d/common-auth文件中找到的内容:

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行或最后一行?

Answers:


17

根据我的理解,success=$num将指定成功时要跳过多少条规则。因此,如果成功pam_unix.sopam_winbind.so失败,PAM将跳至最后一行。当然,最后一行在所有情况下都允许访问。


只是为了清楚起见;当任何一条成功时,第1行和第2行将跳到第4行。说得通。
杰米

也感谢我对其他PAM问题的回答:原来我所有的问题都没有定论;我将ssh登录限制为特定的用户列表,而在添加域身份验证时却忘记了这一点。当我添加Kerberos时,它可以正确修改PAM文件以进行AD身份验证。
杰米

2

pam.d(5)-Linux手册页

对于更复杂的语法,有效的控制值具有以下形式:
[value1=action1 value2=action2 ...]
actionN可以是:无符号整数n,表示“跳过堆栈中的下n个模块”的动作。

common-auth所说的是:

  1. 如果本地UNIX认证返回成功,则将两个模块跳转到第4个模块(模块1 + 2个模块跳转->模块4)。否则,请忽略本地身份验证的结果,然后移至下一个模块。
  2. 如果使用kerberos身份验证的winbind(如今已替换为sssd)返回成功,则将一个模块跳转到模块4。否则,请忽略本地身份验证的结果,然后移至下一个模块。
  3. 拒绝身份验证请求。结果最终定为DENIED,PAM在那里停止(为必需的控制定义的操作)。
  4. 允许所有。结果最终确定为PERMITTED,但移至下一个模块(为所需控制定义的操作)。但是,没有剩下要执行的模块,因此它在那里结束。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.