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

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

/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.sopam_winbind.so成功,PAM 将跳到最后一行。当然,最后一行在所有情况下都允许访问。

答案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. 全部允许。结果最终确定为允许,但转到下一个模块(为所需控制定义的操作)。但是没有剩余模块要执行,因此到此结束。

相关内容