LoginSignup
7
8

More than 5 years have passed since last update.

LDAP環境を簡単にローカルへ構築する

Last updated at Posted at 2015-12-02

要件

  • 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)
  • olcDatabase(DBの箱)

ルートスキーマの作成

  • 適当なディレクトリでldifファイルを作成

    base.ldif
    dn: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.ldif
    dn: 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

参考

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8