Назад | Перейти на главную страницу

LDAP меняет пароль для неправильного пользователя?

У меня установлен сервер OpenLDAP. В настоящее время к моему серверу добавлены два пользователя. Насколько я знаю, одиночный пользовательский экземпляр работает идеально. Моя первая проблема возникает, когда у меня есть два пользователя в репозитории LDAP.

Сразу после добавления второго пользователя я попытался войти на свою Linux-машину, и он всегда просил меня изменить пароль при первом входе в систему (что идеально).

Хотя, когда я вхожу в систему с моим первым временным паролем, вы можете увидеть в выводе ниже, что Пользователь2 пытается войти в систему, но затем, когда он просит изменить пароль, он пытается изменить его для 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 обнаружил учетную запись пользователя, для которой нужно изменить пароль, выполнив поиск uid, разместив его в user1 запись и применение нового пароля. Я не эксперт в LDAP, но мне кажется логичным uidNumber конфликт в LDAP приведет к такому результату, хотя для openLDAP кажется странным допускать, чтобы две записи имели одинаковое значение для такого критического свойства.

Благодарим вас за подробную информацию о вашей общей настройке, чтобы второй взгляд на проблему мог определить потенциального виновника.