下記のサイトを参考にさせていただきました。
# yum -y install openldap-servers openldap-clients
# slappasswd New password: Re-enter new password: {SSHA}l3lUgv5JrcNV0fwIEqPa93Ybielmvp3z
OpenLDAP 2.3 以降では、slapd.conf を使用せず、/etc/openldap/slapd.d/cn=config 配下のエントリを使用するように変更されました。これにより、コンフィグ自体も LDAP 経由でダイナミックにリモートからでも変更可能となりましたが、面倒なので、今回は slapd.conf を用いて初期設定します。
# cp -p /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf # vi /etc/openldap/slapd.conf suffix "dc=example,dc=com" rootdn "cn=Manager,dc=example,dc=com" rootpw {SSHA}l3lUgv5JrcNV0fwIEqPa93Ybielmvp3z # vi /etc/sysconfig/ldap SLAPD_OPTIONS="-f /etc/openldap/slapd.conf"
# chkconfig slapd on # service slapd start
# ldapsearch -x -LLL -D 'cn=Manager,dc=example,dc=com' -W -b 'dc=example,dc=com' '(objectClass=*)' Enter LDAP Password: No such object (32)
# vi init.ldif dn: dc=example,dc=com objectclass: dcObject objectclass: organization o: VIRTUAL CORPORATION dc: example dn: cn=Manager,dc=example,dc=com objectclass: organizationalRole cn: Manager # ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f init.ldif
# vi add.ldif dn: ou=Users,dc=example,dc=com objectclass: organizationalUnit ou: Users dn: ou=Groups,dc=example,dc=com objectclass: organizationalUnit ou: Groups dn: ou=Computers,dc=example,dc=com objectclass: organizationalUnit ou: Computers # ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f add.ldif
# vi groupadd.ldif dn: cn=develop,ou=Groups,dc=example,dc=com objectClass: posixGroup cn: develop gidNumber: 1000 dn: cn=sales,ou=Groups,dc=example,dc=com objectClass: posixGroup cn: sales gidNumber: 1001 dn: cn=market,ou=Groups,dc=example,dc=com objectClass: posixGroup cn: market gidNumber: 1002 # ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f groupadd.ldif
# vi useradd.ldif dn: uid=takeda,ou=Users,dc=example,dc=com objectclass: posixAccount objectclass: inetOrgPerson sn: takeda cn: kazuma displayName: Takeda Kazuma uid: takeda uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/takeda loginShell: /bin/bash userPassword: {CRYPT}B5fKzlwfatuy2 mail: takeda@example.com dn: uid=suzuki,ou=Users,dc=example,dc=com objectclass: posixAccount objectclass: inetOrgPerson sn: suzuki cn: hajime displayName: Suzuki Hajime uid: suzuki uidNumber: 1001 gidNumber: 1000 homeDirectory: /home/suzuki loginShell: /bin/bash userPassword: {CRYPT}B5fKzlwfatuy2 mail: suzuki@example.com dn: uid=tanaka,ou=Users,dc=example,dc=com objectclass: posixAccount objectclass: inetOrgPerson sn: tanaka cn: takuya displayName: Tanaka Takuya uid: tanaka uidNumber: 1002 gidNumber: 1000 homeDirectory: /home/tanaka loginShell: /bin/bash userPassword: {CRYPT}B5fKzlwfatuy2 mail: tanaka@example.com # ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f useradd.ldif
# ldapsearch -x -W -D "cn=Manager,dc=example,dc=com" -b "ou=Users,dc=example,dc=com" -s sub
-x 簡易認証
-W パスワードをプロンプトから入力
-D 認証に使用するユーザ情報
-b 検索の起点
-s 検索範囲 base | one | sub
# yum -y install python python-ldap python-setuptools # easy_install pit # vi pyldap.py import ldap,ldif import sys,optparse,getpass lo = ldap.initialize("ldap://localhost") lo.simple_bind_s("cn=Manager,dc=example,dc=com", "パスワード") result = lo.search_s("dc=example,dc=com", ldap.SCOPE_SUBTREE) ldif_writer = ldif.LDIFWriter(sys.stdout) for dn, entry in result: ldif_writer.unparse(dn,entry) # python pyldap.py