我有一个OpenLDAP服务器设置。 我目前有两个用户添加到我的服务器。 就我的testing而言,单个用户实例工作得很完美。 我的第一个问题出现在LDAP存储库上有两个用户。
直接添加我的第二个用户后,我试图login到我的Linux机器,它总是要求我改变密码,当它的第一次login(这是完美的)。
虽然,当我用我的第一个临时密码login时,可以在下面的输出中看到User2正在尝试login ,但是当它要求更改密码时, 它正在尝试将其更改为User1 。
login as: user2 Authenticating with public key "user2-rsa-key" Further authentication required user1@xxxx'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的问题,所以我会让你们看看我目前的acls是在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通过searchuidfind要更改密码的用户帐户,在user1条目中find并应用新密码。 我不是LDAP的专家,但是在LDAP中使用uidNumber冲突似乎是合乎逻辑的,尽pipeopenLDAP甚至允许两个条目对于这样一个关键属性具有相同的值,这似乎很奇怪。
感谢您提供有关您的整体设置的详细信息,所以关于这个问题的第二个眼睛可能会发现潜在的罪魁祸首。