Vin*_*rão 6 freebsd authentication pam sssd
我试图了解 FreeBSD 10.0 上的 PAM 配置出现了什么错误
该计算机配置了两种不同的身份验证领域,一种是默认的 Unix 身份验证,另一种是使用系统安全服务守护程序 (sssd)。
目前我正在使用此配置,/etc/pam.d/sshd因为我只想允许 sssd 从 ssh 登录。
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient /usr/local/lib/pam_sss.so
#auth sufficient pam_krb5.so no_warn try_first_pass
#auth sufficient pam_ssh.so no_warn try_first_pass
auth required pam_unix.so no_warn use_first_pass
# account
account required pam_nologin.so
#account required pam_krb5.so
account required pam_login_access.so
account required /usr/local/lib/pam_sss.so ignore_unknown_user
account required pam_unix.so
# session
#session optional pam_ssh.so want_agent
session optional /usr/local/lib/pam_sss.so
session optional /usr/local/lib/pam_mkhomedir.so mode=0700
session required pam_permit.so
# password
password sufficient /usr/local/lib/pam_sss.so use_authtok
#password sufficient pam_krb5.so no_warn try_first_pass
password required pam_unix.so no_warn try_first_pass
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,当 sssd 用户登录机器时,它将上线auth sufficient /usr/local/lib/pam_sss.so,因为这是它,因此sufficient它将登录而不会出现任何问题。当本地用户帐户尝试登录时,它将在 sssd 检查中失败,但会成功pam_unix.so使用第一次输入的密码,而无需再次要求输入密码。
但事实并非如此。要以本地帐户成功登录,我必须use_first_pass从pam_unix.so身份验证领域的选项中删除,并且当用户登录时,系统首先要求 sssd 帐户,由于外部身份验证服务中不存在本地用户,所以失败。然后系统再次要求输入相同的密码,但在pam_unix.so模块上进行身份验证。最后授予访问权限。
例如,它的行为方式如下:
ssh sssd-test.example.com -l local-user-account
Password:
Password for local-user-account@sssd-test.example.com:
Last login: Sat May 24 16:22:40 2014 from 192.168.1.100
FreeBSD 10.0-RELEASE-p1 (GENERIC) #0: Tue Apr 8 06:45:06 UTC 2014
Welcome to FreeBSD!
$
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会发生这种情况,或者是否与会议有关account。就我对PAM的理解来说,配置应该是对的。
提前致谢,
嗯,我关于 PAM 工作原理的前提是正确的。
该pam_sss.so模块期望forward_pass将参数中继到其他 PAM 模块的密码,就像该pam_unix.so模块一样。因此,只需添加此选项即可完成工作。结果行是:
auth sufficient /usr/local/lib/pam_sss.so forward_pass
Run Code Online (Sandbox Code Playgroud)
这导致了另一个问题。如果 sssd 甚至 sssd 的身份验证领域关闭,您将无法登录,因为该pam_sss.so模块将无法工作,因此密码将不会被转发。
因此,显而易见的选择是放在pam_unix.so前面pam_sss.so,让一切都“足够”,并pam_deny.so在最后完美地结束。这是 Linux 解决问题的方法,但这似乎不适用于 FreeBSD。
在谷歌搜索邮件列表之后,在 FreeBSD 上执行此操作的正确方法是在 PAM 中使用奇怪的顺序:
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient pam_unix.so no_warn
auth sufficient /usr/local/lib/pam_sss.so use_first_pass
auth required pam_unix.so no_warn use_first_pass
Run Code Online (Sandbox Code Playgroud)
因此,在 PAM 中放入pam_unix.so两次,第一次 assufficient和最后一次 asrequired就可以了。我不知道为什么会发生这种情况,但它正在起作用,并且似乎是正确的方法。
| 归档时间: |
|
| 查看次数: |
6236 次 |
| 最近记录: |