Authentication

Authconfig 未找到所有 ldap 組

  • November 11, 2014

我的(即將成為)管理員帳戶分為兩組:

#  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/whatever 沒有更新其記憶體。我還沒有設法在日誌中進行實際查找。

(我確實在日誌中看到authconfig/ sssd/something 仍在嘗試進行匿名綁定,儘管我在 sssd.conf 中放置了一個ldap_default_bind_dnand 。)ldap_default_authtok

沒關係…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.confand /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.confor sssd.conf

一旦我記得這樣做,我就會從id命令中得到很好的值,包括完整的組列表。cn=svcSUDO,ou=serviceAccounts,${l_basedn}我還使用和獲得 SUDO 權限列表$(cat ${f_svcSUDO_passphrase})

引用自:https://unix.stackexchange.com/questions/166918