我的(即将成为的)管理员帐户分为两组:
# ldapsearch \
> -v \
> -H ldaps://localhost:636 \
> -D "${l_dirmgr}" \
> -w $(cat ${f_dirmgr_passphrase}) \
> -b "ou=groups,${l_basedn}" \
> "member=cn=testuser" \
> dn gidNumber member
dn: cn=wheel,ou=groups,dc=localdomain
gidNumber: 10
member: cn=testuser,ou=users,dc=localdomain
dn: cn=users,ou=groups,dc=localdomain
gidNumber: 100
member: cn=testuser,ou=users,dc=localdomain
但是,id
只能看到我的用户记录中关联的 GID:
# id testuser
uid=20001(testuser) gid=100(users) groups=100(users)
我如何深入authconfig
//查看它实际上sssd
在ldap
寻找和提取什么? 389DS 访问日志没有向我显示任何内容,可能是因为authconfig
/ sssd
/无论什么都没有更新其缓存。我还没有设法在日志中捕获实际的查找。
(我确实在日志中看到authconfig
//sssd
某些东西仍在尝试进行匿名绑定,尽管我在 sssd.conf 中添加了ldap_default_bind_dn
and ldap_default_authtok
。)
答案1
没关系...ldap_default_authtok
里面有旧密码...
(而且,你在我额头中间看到的瘀伤是我用头敲桌子造成的……)
好的,现在有更多细节。我创建的 LDAP 实例与我的一致关于该主题的注释。其中包括 LDIF 的这一点:
dn: cn=config
changetype: modify
replace: nsslapd-allow-anonymous-access
nsslapd-allow-anonymous-access: off
-
replace: nsslapd-require-secure-binds
nsslapd-require-secure-binds: on
由于我不允许匿名访问,因此我创建了一个供 PAM 用于连接的服务帐户以及一个服务帐户容器:
dn: ou=serviceAccounts,${l_basedn}
changetype: add
objectClass: organizationalUnit
objectClass: top
ou: serviceAccounts
description: Container for service accounts. Some will have shell access
(objectClass: posixUser), most won't.
dn: cn=svcAuthenticator,ou=serviceAccounts,${l_basedn}
changetype: add
objectClass: top
objectClass: person
cn: svcAuthenticator
sn: svcAuthenticator
userPassword: $(cat ${f_svcAuthenticator_passphrase})
description: Service account to allow PAM/SSS to search the LDAP database.
(我需要objectClass: person
给该帐户一个密码。但是,sn
这是 的必需属性objectClass: person
。所以,我伪造了它。)
然后,我将该密码放入/etc/pam_ldap.conf
and中/etc/sssd/sssd.conf
:
sed --in-place=.$(date +%Y%m%d) "/#binddn.*/ a\
binddn cn=svcAuthenticator,ou=serviceAccounts,${l_basedn}" /etc/pam_ldap.conf
sed --in-place "/#bindpw.*/ a\
bindpw $(cat ${f_svcAuthenticator_passphrase})" /etc/pam_ldap.conf
sed --in-place=.$(date +%Y%m%d) "/^ldap_uri.*/ a\
ldap_default_bind_dn = cn=svcAuthenticator,ou=serviceAccounts,${l_basedn}" /etc/sssd/sssd.conf
sed --in-place "/^ldap_default_bind_dn.*/ a\
ldap_default_authtok = $(cat ${f_svcAuthenticator_passphrase})" /etc/sssd/sssd.conf
这一切都很好,直到我${f_svcAuthenticator_passphrase}
在尝试解决其他 LDAP 问题时更改了 的内容,并且从未将新值传递给pam_ldap.conf
或sssd.conf
。
一旦我记得这样做,我就从id
命令中得到了很好的值,包括完整的组列表。我还使用cn=svcSUDO,ou=serviceAccounts,${l_basedn}
和获得 SUDO 权限列表$(cat ${f_svcSUDO_passphrase})
。