首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何拥有备份pam模块

问如何拥有备份pam模块
EN

Unix & Linux用户
提问于 2017-12-09 14:21:29
回答 2查看 670关注 0票数 3

我现在开始了解PAM了。现在我使用OTP和密码,但我希望能够使用OTP和密码,如果失败,请使用我的YubiKey和密码。我在Arch上,我的系统-auth文件位于pam.d目录中,如下所示:

代码语言:javascript
复制
auth      required  pam_oath.so     usersfile=/etc/users.oath window=30 digits=6 debug
auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so
EN

回答 2

Unix & Linux用户

发布于 2017-12-09 16:03:19

Arch是Linux (与Solaris PAM和FreeBSD PAM不同),Linux有跳过规则的方法,因此实现这一目的的一种方法是

代码语言:javascript
复制
auth required pam_unix.so ... # password
auth [success=2 default=bad] pam_yubikey ...
auth [success=1 default=bad] pam_otp ...
auth required pam_deny.so
auth required pam_env.so
...

对于yubikey来说,如果工作的话,应该跳过两个规则(到env和随后的任何auth设置步骤),对于OTP,则跳到相同的规则下,否则会拒绝auth。我不确定default或[...]位的其他选项应该是什么,所以我将它们设置为失败。

另一个选项是子堆栈,在主规则文件中有如下内容:

代码语言:javascript
复制
...
auth substack otp-foo
auth substack yubikey-foo
...

然后再添加一些/etc/pam.d/{otp-foo,yubikey-foo}文件,这样就可以执行if-authgood-或-pam_deny。但是,在本例中,这两种方法都将被尝试(Linux通过所有子堆栈工作),与前面的示例不同,在上面的示例中,如果yubikey工作,它将跳过otp检查。

票数 3
EN

Unix & Linux用户

发布于 2017-12-09 17:54:00

在thrig的帮助下,我终于把它做对了,但是他的第一个解决方案没有工作,因为default=bad会使它成功,所以堆栈总是会失败。我做的方法是做一个2fa的子堆栈。我这次是在su上而不是系统上测试的。su PAM文件如下所示:

代码语言:javascript
复制
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth            required        pam_unix.so
auth            substack        2fa
account         required        pam_unix.so
session         required        pam_unix.so

正如您在pam_unix之后看到的,我包含了2fa子堆栈,如下所示:

代码语言:javascript
复制
auth sufficient pam_yubico.so id=35659 authfile=/etc/yubikey_mappings debug
auth required   pam_oath.so usersfile=/etc/users.oath window=30 digits=6 debug

因为它位于子堆栈中,因此充分的控制值并不是结束整个模块堆栈,而是结束子堆栈。因此,如果我的yubikey失败了,如果我输入了正确的密码,我可以使用OTP。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/409914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档