Linux
LDAP為錯誤的使用者更改密碼?
我有一個 OpenLDAP 伺服器設置。我目前有兩個使用者添加到我的伺服器。就我的測試而言,單個使用者實例可以完美執行。當我在 LDAP 儲存庫上有兩個使用者時,我的第一個問題出現了。
添加第二個使用者後,我嘗試登錄我的 linux 機器,第一次登錄時它總是要求我更改密碼(這是完美的)。
雖然,當我使用我的第一個臨時密碼登錄時,您可以在下面的輸出中看到User2 正在嘗試登錄,但是當它要求更改密碼時,它正在嘗試為 User1更改密碼。
login as: user2 Authenticating with public key "user2-rsa-key" Further authentication required user1@x.x.x.x's password: You are required to change your password immediately (root enforced) You are required to change your LDAP password immediately. Last login: 'Date' From 'Hostname' WARNING: Your password has expired. You must change your password now and login again! Changing password for user user1. <----- This is where it messes up ! Enter login(LDAP) password:
我相信這是我的 ACL 的問題,所以我會讓你們看看我目前的 acl 在 olcDatabase={2}bdb.ldif
olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=admin,dc=domain,dc=com" write by anonymous auth by * none olcAccess: {1}to * by dn.base="cn=admin,dc=domain,dc=com" write by self write by * read
現在假設這不是我的 ACL 的問題,我想知道這是否只是我如何將使用者添加到我的 LDAP 伺服器。我通常使用此命令添加使用者:
ldapadd -x -W -D "cn=admin,dc=domain,dc=com" -f user.ldif
最後,這是我的伺服器上目前的輸出
[root@localhost ~]# ldapsearch -x -W -D "cn=admin,dc=domain,dc=com" -b "dc=domain,dc=com" "(objectclass=*)" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <dc=domain,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # domain.com dn: dc=domain,dc=com objectClass: dcObject objectClass: organization o: domain.com dc: domain # users, domain.com dn: ou=users,dc=domain,dc=com objectClass: organizationalUnit objectClass: top ou: users # groups, domain.com dn: ou=groups,dc=domain,dc=com objectClass: organizationalUnit objectClass: top ou: groups # user1, users, domain.com dn: uid=user1,ou=users,dc=domain,dc=com objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount objectClass: ldapPublicKey cn: user1 uid: user1 uidNumber: 16859 gidNumber: 100 homeDirectory: /home/user1 loginShell: /bin/bash gecos: user1 shadowMax: 0 shadowWarning: 0 sshPublicKey: some rsa keys userPassword:: crypted password shadowLastChange: 16991 # user2, users, domain.com dn: uid=user2,ou=users,dc=domain,dc=com objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount objectClass: ldapPublicKey cn: user2 uid: user2 uidNumber: 16859 gidNumber: 100 homeDirectory: /home/user2 loginShell: /bin/bash gecos: user2 shadowLastChange: 0 shadowMax: 0 shadowWarning: 0 sshPublicKey: some rsa keys userPassword:: crypted password # search result search: 2 result: 0 Success # numResponses: 6 # numEntries: 5
您的兩個使用者定義都包括
uidNumber: 16859
. 您描述的user2的密碼更改實際更新user1密碼的場景可能是由於 LDAP 通過搜尋找到要更改密碼的使用者帳戶,在user1uid
條目中找到它並應用新密碼。我不是 LDAP 專家,但似乎合乎邏輯的LDAP 中的衝突會產生這種結果,儘管 openLDAP 甚至允許兩個條目對於這樣一個關鍵屬性具有相同的值似乎很奇怪。uidNumber
感謝您提供有關您的整體設置的詳細資訊,以便對問題的第二次關注可以發現潛在的罪魁禍首。