OpenLDAP構築@Ubuntu10.10
インストール
$ sudo apt-get install slapd ldap-utils
設定
OpenLDAP2.3からはslapd.confとかで管理しないようになったらしく
設定ファイルもデータベース化しちゃう方針になったみたい(Configuration Backendなる機能
原因不明なのが色々あってずいぶん困った…
Ubuntu10.10のアップデート待ってたらいつの間にか出来るようになってた
Ubuntu10.04公式ガイドとやり方は同じ
https://help.ubuntu.com/10.04/serverguide/C/openldap-server.html
スキーマを組み込む
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
backendを作成
$ sudo vi /etc/ldap/backend.example.com.ldif
# Load dynamic backend modules dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/lib/ldap olcModuleload: back_hdb # Database settings dn: olcDatabase=hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcSuffix: dc=example,dc=com olcDbDirectory: /var/lib/ldap olcRootDN: cn=admin,dc=example,dc=com olcRootPW: secret olcDbConfig: set_cachesize 0 2097152 0 olcDbConfig: set_lk_max_objects 1500 olcDbConfig: set_lk_max_locks 1500 olcDbConfig: set_lk_max_lockers 1500 olcDbIndex: objectClass eq olcLastMod: TRUE olcDbCheckpoint: 512 30 olcAccess: to attrs=userPassword by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none olcAccess: to attrs=shadowLastChange by self write by * read olcAccess: to dn.base="" by * read olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/backend.example.com.ldif
frontendを作成
$ sudo vi /etc/ldap/frontend.example.com.ldif
# Create top-level object in domain dn: dc=example,dc=com objectClass: top objectClass: dcObject objectclass: organization o: Example Organization dc: Example description: LDAP Example # Admin user. dn: cn=admin,dc=example,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword: secret # unit1 dn: ou=unit1,dc=example,dc=com objectClass: organizationalUnit ou: unit1 # unit1-1 dn: ou=unit1-1,ou=unit1,dc=example,dc=com objectClass: organizationalUnit ou: unit1-1 # member dn: uid=0001,ou=unit1-1,ou=unit1,dc=example,dc=com objectClass: inetOrgPerson cn: Yamada Taro sn: Taro uid: 0001 userPassword: hoge
$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f /etc/ldap/frontend.example.com.ldif
確認
$ ldapsearch -xLLL -b "dc=example,dc=com"
で登録したのが出ればOK
削除
$ ldapdelete -x -D "cn=admin,dc=example,dc=com" "uid=hoge,ou=unit1-1,unit1,dc=example,dc=com" (hogeさん削除 ※leafのみ可
$ ldapdelete -x -D "cn=admin,dc=example,dc=com" "dc=example,dc=com" -W -r (dc=example,dc=com以下を削除
変更
rootpwの変更
$ vi /etc/ldap/rootpw.ldif
dn: olcDatabase={0}config,cn=config changetype: modify replace: olcRootPW olcRootPW: newpasswd
$ ldapmofiy -x -D cn=config -w secret -f /etc/ldap/rootpw.ldif
rootDNの変更
$ vi /etc/ldap/backend.modify.ldif
dn: olcDatabase={1}hdb,cn=config replace: olcSuffix olcSuffix: o=hoge,c=JP - replace: olcRootDN olcRootDN: cn=admin,o=hoge,c=JP - replace: olcAccess olcAccess: {0}to attrs=userPassword by dn="cn=admin,o=hoge,c=JP" write by anonymous auth by self write by * none olcAccess: {3}to * by dn="cn=admin,o=hoge,c=JP" write by * read
$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ldap/backend.modify.ldif
以下は問題が起きまくってたときのメモ(たぶん不要)
すでに/etc/ldap/slapd.d
があったけどrootpwがsecretじゃないようで自分で作り直した
$ sudo mv /etc/ldap/slapd.d /etc/ldap/slapd.d.orig
$ sudo -u openldap mkdir /etc/ldap/slapd.d
$ sudo vi /etc/ldap/slapd.conf
database config rootdn "cn=config" rootpw secret
$ sudo -u openldap slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d
$ sudo /etc/init.d/slapd restart
The pidfile for slapd is neither specified in "/etc/ldap/slapd.d/" nor in /etc/default/slapd. Consequently, slapd will not be started.
とか言われるので
$ sudo vi /etc/default/slapd
SLAPD_PIDFILE="/var/run/slapd/slapd.pid"
$ sudo /etc/init.d/slapd restart
これで無事起動
$ ldapsearch -x -D cn=config -b cn=config -w secret
でずらずら出ればひとまず完了