OpenLDAPのインストール¶
- OpenLDAPのインストールとユーザアカウントの認識までを行う
インストール¶
- 下記のコマンドで必要なパッケージをインストールする
# yum install openldap-clients openldap-servers
- ConfigurationBackendではなくslapd.confを使って起動するように設定
「slapd.conf.obsolete」がない場合、CentOS6用のrpmなどから取得する# cp -p /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf # vi /etc/init.d/slapd (/etc/sysconfig/slapd があれば、そちらに記載する) # OPTIONS, SLAPD_OPTIONS and KTB5_KTNAME are not defined SLAPD_OPTIONS="-f /etc/openldap/slapd.conf"
- 管理者用パスワードを設定する。コマンドを実行すると入力を促される。
実行後に表示される{SSHA}の行をコピーしておく# slappasswd New password: Re-enter new password: {SSHA}***********************
- 設定ファイルを編集する
# vi /etc/openldap/slapd.conf suffix "dc=example,dc=local" rootdn "cn=Manager,dc=example,dc=local" rootpw {SSHA}***********************
- 初回起動
# systemctl restart slapd
- 問題がなければ起動設定を行う
# systemctl enable slapd
設定¶
- 下記の設定を行う
# vi /etc/openldap/slapd.conf #database config #access to * # by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" ma nage # by * none database monitor access to * by dn.exact="cn=Manager,dc=example,dc=local" read by * none # by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read # by dn.exact="cn=Manager,dc=my-domain,dc=com" read
- コンフィグのテストを行う
# slaptest -u -f /etc/openldap/slapd.conf -v config file testing succeeded
- サービスのリロードをこなう
# systemctl restart slapd
データ投入¶
- 下記のファイルを作成する
# vi /etc/openldap/init.ldif dn: dc=example,dc=local objectclass: dcObject objectclass: organization o: TEST ORG dc: example dn: cn=Manager,dc=example,dc=local objectclass: organizationalRole cn: Manager
- 次のコマンドでデータを投入する
# ldapadd -x -W -D "cn=Manager,dc=example,dc=local" -f /etc/openldap/init.ldif Enter LDAP Password: adding new entry "dc=example,dc=local" adding new entry "cn=Manager,dc=example,dc=local"
- 以下のコマンドでデータを検索できるか確認する
# ldapsearch -x -W -D "cn=Manager,dc=example,dc=local" -b "cn=Manager,dc=example,dc=local" -s sub Enter LDAP Password: # extended LDIF # # LDAPv3 # base <cn=Manager,dc=example,dc=local> with scope subtree # filter: (objectclass=*) # requesting: ALL # … ……
- 検索できることを確認したら、同じように認証用のテンプレートを作成する
userPasswordは新たにslappasswdコマンドで作成しておくこと# vi /etc/openldap/user.ldif dn: ou=Groups,dc=example,dc=local objectClass: organizationalUnit ou: Groups dn: cn=Users,ou=Groups,dc=example,dc=local objectClass: posixGroup objectClass: top cn: Users gidNumber: 2000 memberUid: user001 dn: ou=Members,dc=example,dc=local objectClass: organizationalUnit ou: Members dn: uid=user001,ou=Members,dc=example,dc=local objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: user001 cn: user001 lastname sn: user001 givenName: lastname mail: user001@example.local shadowLastChange: 11414 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 2000 gidNumber: 2000 homeDirectory: /home/user001 userPassword: {SSHA}**********************
- 次のコマンドでデータを投入する
# ldapadd -x -W -D "cn=Manager,dc=example,dc=local" -f /etc/openldap/user.ldif Enter LDAP Password: adding new entry "ou=Users,dc=example,dc=local" adding new entry "uid=user001,ou=Users,dc=example,dc=local"
- 以下のコマンドでデータを検索できるか確認する
# ldapsearch -x -W -D "cn=Manager,dc=example,dc=local" -b "ou=Users,dc=example,dc=local" -s sub Enter LDAP Password: Enter LDAP Password: # extended LDIF # # LDAPv3 # base <ou=Users,dc=example,dc=local> with scope subtree # filter: (objectclass=*) # requesting: ALL # # Users, example.local … ……
サーバ側の認証クライアントの設定¶
- 以下のコマンドを実行し、設定画面を表示する
# authconfig-tui
- 次の内容を設定する
ユーザ情報 [*] LDAP を使用 認証 [*] MD5 パスワードを使用 [*] シャドウパスワードを使用 [*] LDAP 認証を使用 サーバー ldap://127.0.0.1/ ベース DN dc=example,dc=local
- 次のコマンドでユーザ情報を取得できるかを確認する
# id user001 uid=2000(user001) gid=2000 所属グループ=2000
- ホームディレクトリを作成するようにpamに設定を追加する
# vi /etc/pam.d/system-auth ~末尾 session optional pam_mkhomedir.so skel=/etc/skel umask=022
- ユーザを切り替えてみる
# su - user001 ディレクトリ '/home/user001' を作成中 $ exit
起動順の修正¶
そのままではLDAPサーバが起動する前にpam-ldapのクライアントが起動してしまい、
OS起動時にサーバ接続不可のメッセージが大量に記録されてしまうため、起動順
の再設定を行う。
- 次の2つのファイルの「chkconfig~」行を調べる。
# vi /etc/init.d/slapd ----------------------------- # chkconfig: - 27 73
# vi /etc/init.d/nslcd ----------------------------- # chkconfig: - 12 88
- 「nslcd」の「-」の次の数字を「slapd」の「-」の次の数字をインクリメントした値に変更する
# vi /etc/init.d/nslcd ----------------------------- # chkconfig: - 28 88
- サービスの再登録を行う
# chkconfig --del nslcd # chkconfig --add nslcd # chkconfig on nslcd
- 再起動して「var/log/messages」にエラーが表示されないことを確認する
以上でuser001はunixユーザとして認証に利用できる