我正在配置yubico-pam以使用来自 Yubikey 的挑战响应来启用无密码 sudo 访问。以下工作:
# /etc/pam.d/sudo
auth sufficient pam_yubico.so mode=challenge-response
auth required pam_opendirectory.so
account required pam_permit.so
password required pam_deny.so
session required pam_permit.so
Run Code Online (Sandbox Code Playgroud)
除非 pam_yubico.so 模块丢失、卸载或损坏,在这种情况下会被告知:
$ sudo su -
sudo: 无法初始化 PAM: 没有那个文件或目录
是否可以告诉 PAM 忽略丢失的模块,而不是简单地立即返回并阻止 PAM 继续评估堆栈?
在扩展语法中(请参阅 参考资料pam.conf(5)),可以通过定义错误open_err代码的行为来定义 dlopen() 调用失败时的自定义行为。也就是说,sufficient应该已经为您完成了这一任务。以下是同一联机帮助页中的等效扩展语法:
sufficient\n [success=done new_authtok_reqd=done default=ignore]\nRun Code Online (Sandbox Code Playgroud)\n\n看到default=ignore最后了吗?
The last of these, default, implies \xc2\xb4all valueN\xc2\xb4s not mentioned\n explicitly. Note, the full list of PAM errors is available in\n /usr/include/security/_pam_types.h. \nRun Code Online (Sandbox Code Playgroud)\n\n换句话说,default=ignore相当于open_err=ignore。除非 PAM 的行为方式未在此处记录,否则这表明故障发生在堆栈的更下方。
PAM_OPEN_ERR为了消除任何疑问,以下是来自标头的定义:
#define PAM_OPEN_ERR 1 /* dlopen() failure when dynamically */\n /* loading a service module */\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |