サーバを新しくしたら、OpenLDAPのバージョンが上がっていろいろ変わってました。
インストール
$ sudo aptitude install slapd
$ sudo aptitude install ldap-utils ldapvi
設定
- 最近のOpenLDAPは管理情報をDBに持っているようです。
- cn=config用のolcRootDNとolcRootPWがないと外部からアクセス出来ません。
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={0}config,cn=config'
$ slappasswd -h "{CRYPT}" -c '$6$%s$' -s password
{CRYPT}##########################################################################################################
- config用の情報や移行元サーバと設定を合わせるために設定を追加します。
- 1回目はolcRootPWを変えられなかったので、2回めにolcRootPWのみ変更しました。
- 差分だけ記述してます。
$ sudo ldapvi -Y EXTERNAL -h ldapi:/// -b 'olcDatabase={0}config,cn=config'
---
olcRootDN: cn=config
olcRootPW: (パスワードのハッシュ)
---
$ sudo ldapvi -Y EXTERNAL -h ldapi:/// -b 'olcDatabase={1}hdb,cn=config'
---
olcSuffix: dc=ldap,dc=example,dc=com
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=root,dc=ldap,dc=example,dc=com" write by * none
olcAccess: {2}to * by self write by dn="cn=root,dc=ldap,dc=example,dc=com" write by * read
olcRootDN: cn=root,dc=ldap,dc=example,dc=com
olcDbIndex: objectClass eq
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
olcDbIndex: uidNumber,gidNumber,loginShell eq,pres
olcDbIndex: uid,memberUid eq,pres,sub
olcDbIndex: nisMapName,nisMapEntry eq,pres,sub
---
データ投入
$ ldapsearch -x -b "dc=ldap,dc=example,dc=com" -D "cn=root,dc=ldap,dc=example,dc=com" -W
---
search: 2
result: 32 No such object
---
$ vi base.ldif
---
dn: dc=ldap,dc=example,dc=com
objectClass: dcObject
objectClass: organization
o: foo-system
dc: ldap
dn: ou=Users,dc=ldap,dc=example,dc=com
objectClass: organizationalUnit
ou: Users
dn: ou=Groups,dc=ldap,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups
---
$ ldapadd -x -D "cn=root,dc=ldap,dc=example,dc=com" -W -f base.ldif
$ vi users.ldif
---
dn: uid=admin,ou=Users,dc=ldap,dc=example,dc=com
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: admin
sn: admin
uid: admin
uidNumber: 1000
gidNumber: 513
homeDirectory: /home/admin
loginShell: /bin/bash
gecos: System User
description: System User
displayName: System User
userPassword::
dn: uid=test,ou=Users,dc=ldap,dc=example,dc=com
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: test
sn: test
uid: test
uidNumber: 1001
gidNumber: 513
homeDirectory: /home/test
loginShell: /bin/bash
gecos: Test User
description: Test User
displayName: Test User
userPassword::
---
$ ldapadd -x -D "cn=root,dc=ldap,dc=example,dc=com" -W -f users.ldif
- 投入したユーザのパスワード変えたいときは以下のようにパスワードのハッシュ値を作っておいて、その文字列を投入します。
$ slappasswd -h "{MD5}"
$ sudo ldapvi -Y EXTERNAL -h ldapi:/// -D "cn=root,dc=ldap,dc=example,dc=com" -b "uid=test,ou=Users,dc=ldap,dc=example,dc=com"
$ ldapsearch -x -b "dc=ldap,dc=example,dc=com" -D "uid=test,ou=Users,dc=ldap,dc=example,dc=com" -W
- 後は旧サーバから移行するデータをldifで作って流すだけです。