要件
- Ubuntu13
- ldapi:///dev01.hoge.local:389,dc=hoge,dc=local
インストール
$ apt-get install ldap-utils slapd ldapvi libnss-ldapd libpam-ldapd nscd
※LDAPAdministorator Passwordは「p0o9i8」
※libnss-ldap libpam-ldapという名のパッケージもあるがこちらは古いらしい。紛らわしい。
LDAP
-
DN表記(コマンドラインでオブジェクトを指定する際に利用する)
- 識別名(DN)
- CN=...で始まる。
- 組織単位(OU)
- 組織(O)
- ドメイン(DC)
- 国(C)
- 識別名(DN)
olcDatabase(DBの箱)
ルートスキーマの作成
-
適当なディレクトリでldifファイルを作成
base.ldifdn:ou=People,dc=hoge,dc=local objectClass: organizationalUnit ou: People
-
作成したldifファイルを読み込み
$ ldapadd -x -D cn=admin,dc=hoge,dc=local -W -f base.ldif
-x シンプルな認証
-D LDAPにバインドするのに使用するDN。行う操作に必要な権限をもったDNを指定する必要がある。これ無しだとanonymousバインドになる。
-W プロンプトでパスワードを要求
-f ファイルを指定
-
追加した内容を確認
$ ldapsearch -x -D cn=admin,dc=hoge,dc=local -W -LLL -b dc=hoge,dc=local dn Enter LDAP Password: dn: dc=hoge,dc=local dn: cn=admin,dc=hoge,dc=local dn: ou=People,dc=hoge,dc=local
スキーマの追加
-
現状読み込まれているスキーマの確認
$ ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
-
必要なスキーマの追加
$ ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/openssh-lpk.ldif $ ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/sudo.ldif
ユーザーの追加
-
適当なディレクトリでldifファイルを作成
a123456.ldifdn: uid=a123456,ou=People,dc=hoge,dc=co,dc=jp objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount objectClass: ldapPublicKey sn: hoge cn: foo uid: a123456 uidNumber: 10001 gidNumber: 10001 homeDirectory: /home/a123456 userPassword: {SSHA}9yfE3ENwK0oaC/zo4tFPnu3LpXTwAsnH mail: hoge_foo@xxx.co.jp loginShell: /bin/bash
dn 追加する識別名
objectClass 継承するオブジェクトクラスの指定- inetOrgPerson 組織に属する人間の属性参考
- posixAccount POSIX抽象化の属性
- shadowAccount(shadowPasswordの追加属性)
- ldapPublicKey(公開鍵の追加属性)
sn (Sir Name:姓)
cn (Common Name:名)
uid (ユーザー名)
uidNumber (ユーザーID)
gidNumber (グループID)
homeDirectory (まんま)
userPassword (まんま)※slappasswordコマンドで生成
mail: (まんま)
loginShell: (まんま)
description: (まんま) -
作成したldifファイルの読み込み
$ ldapadd -x -D cn=admin,dc=hoge,dc=local -W -H ldapi:// -f a123456.lidf
-H 対象ホスト
-
追加したユーザーが存在するか確認
$ ldapsearch -x -D cn=admin,dc=hoge,dc=local -W -LLL -b dc=hoge,dc=local dn Enter LDAP Password: dn: dc=hoge,dc=local dn: cn=admin,dc=hoge,dc=local dn: ou=People,dc=hoge,dc=local dn: uid=a123456,ou=People,dc=hoge,dc=local
設定
/etc/nslcd.conf
uid nslcd
gid nslcd
uri ldap://xxx.xxx.xxx.xxx
base ou=People,dc=hoge,dc=local
ldap_version 3
nss_initgroups_ignoreusers root
pam_authz_search (&(objectClass=posixAccount)(uid=$username))
/etc/ldap/ldap.conf
URI ldap://xxx.xxx.xxx.xxx
BASE ou=People,dc=hoge,dc=local
TIMELIMIT 120
TIMEOUT 120
NETWORK_TIMEOUT 120
起動
$ /etc/init.d/nscd restart
$ /etc/init.d/nslcd restart
$ /etc/init.d/slapd restart