我遇到了一个关于active directory和pam的问题,但这可以应用到其他地方。
设置yubikey over pam以利用vpn连接的双因素身份验证,我需要将binddn设置为与ad/ldap服务器联系的bind用户。不幸的是,binddn中有一个容器,其中有一个空间,pam不允许这个空间,也不允许我逃离它。例子:
/etc/pam.d/radiusd
auth required pam_yubico.so id=16 debug ldap_uri=ldap://ad-server.local ldapdn=DC=company,DC=local binddn=CN=binduser,OU=users,OU=other accounts,OU=departments,DC=company,DC=local bindpw=5up3rpa55w0rd user_attr=sAMAccountName yubi_attr=employeeNumber
我尝试过ou=“other accounts”,ou=other\accounts,ou=“other accounts”,并将整个binddn放在双引号和单引号中。每次在pam调试中,我都会得到:
[pam_yubico.c:parse_cfg(747)] called.
[pam_yubico.c:parse_cfg(748)] flags 0 argc 9
[pam_yubico.c:parse_cfg(750)] argv[0]=id=16
[pam_yubico.c:parse_cfg(750)] argv[1]=debug
[pam_yubico.c:parse_cfg(750)] argv[2]=ldap_uri=ldap://ad-server.local
[pam_yubico.c:parse_cfg(750)] argv[3]=ldapdn=DC=company,DC=local
[pam_yubico.c:parse_cfg(750)] argv[4]=binddn=CN=binduser,OU=users,OU=other
[pam_yubico.c:parse_cfg(750)] argv[5]=accounts,OU=departments,DC=company,DC=local
[pam_yubico.c:parse_cfg(750)] argv[6]=bindpw=5up3rpa55w0rd
[pam_yubico.c:parse_cfg(750)] argv[7]=user_attr=sAMAccountName
[pam_yubico.c:parse_cfg(750)] argv[8]=yubi_attr=employeeNumber
如您所见,当列表中的空格、引号或转义符作为binddn的一部分出现时,它将被截断,如下所示:
[pam_yubico.c:parse_cfg(750)] argv[4]=binddn=CN=binduser,OU=users,OU=other\
[pam_yubico.c:parse_cfg(750)] argv[5]=accounts,OU=departments,DC=company,DC=local
我该怎么做才能让pam认识到这个空间不是用来分隔另一个字段的?
最佳答案
从有用的文档中输入man pam.d
:(添加重点)
模块参数是一个用空格分隔的令牌列表,可用于修改给定pam的特定行为。这些参数将记录在每个模块中。注意,如果希望在参数中包含空格,则应将该参数用方括号括起来。
下面的文本包括一些关于如何处理包含方括号的参数的注释,以及一个示例行。
关于linux - Linux PAM模块中的允许/转义空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17731555/