openldap 2.3 インストール


Table of Contents

↑

インストール環境

  • OS
    • CentOS 5.3
  • パッケージ
    • openldap-servers-2.3.43-3.el5
    • openldap-clients-2.3.43-3.el5
↑

openldapのインストール

  1. openldap-serversのインストール
    # yum install openldap-servers

  2. openldap-clientsのインストール
    # yum install openldap-clients

↑

openldapの設定

↑

管理パスワードの生成

  • slappasswdコマンドで管理用パスワードを生成します。
    # slappasswdNew password:****Re-enter new password:****{SSHA}MG//NfdYLHxWJINHLgh7ZTwPdzHy2mNn 
    このパスワードは後で利用するのでテキストなどに貼り付けておきます。
↑

slapd.confの編集

  • ldapの設定ファイル「/etc/openldap/slapd.conf」を編集します
    suffix      "dc=oss-d,dc=net"rootdn      "cn=Manager,dc=oss-d,dc=net"#先ほど生成したパスワードを入力しますrootpw      {SSHA}MG//NfdYLHxWJINHLgh7ZTwPdzHy2mNn#ユーザが自分のパスワード変更できるようにアクセス権を設定するaccess to attrs=userPassword  by self write  by anonymous auth  by * none#管理者は書き込み可能、その他のユーザは読み取り専用access to *  by self write  by * read
↑

Berkeley DBの設定

  • Berkeley DBの設定ファイルであるDB_CONFIGは、サンプルをコピーします。
    # cp -rp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

↑

自動起動の設定

  • chkconfigコマンドで自動起動をONにします
    # chkconfig ldap on

  • chkconfigコマンドで自動起動の確認をします。LUNレベル3,4,5がonになっていれば問題ありません。
    # chkconfig --list ldapldap            0:off   1:off   2:on    3:on    4:on    5:on    6:off
↑

起動・確認

  • ldapを起動します。
    # /etc/init.d/ldap start


  • psコマンドでプロセスの確認を行います。/usr/sbin/slapd があれば問題ありません。
    # ps ax|grep ldap2876 ?        Ssl    0:00 /usr/sbin/slapd -h ldap:/// -u ldap
↑

ファイアウォールの設定

  • 環境に合わせてファイアウォールの設定(ファイル「/etc/sysconfig/iptables」)を変更します。設定変更後はiptablesの再起動を忘れないように注意します。

↑

データベースの作成

↑

データベース構成

  • 今回は下記のような構成でデータベースを作成します。
ldap_データベース構造.JPG
・Manager
slapd.confでrootdnに設定したディレクティブ。
Unixのrootのような扱いでデータベースに対してありとあらゆる権限を持ちます。
・Group
グループを登録するディレクティブ。
一般的なグループと同じで、複数ユーザをまとめて1つとして扱うために利用します。
Active Directory であれば administratorsやpoweruserがあります。
・Users
ユーザを登録するディレクティブ。
↑

データ登録

データの登録は一括登録に便利なldifファイルを利用します。

↑

サブツリーの登録

  • サブツリー用にldifファイル「object.ldif」を作成します。
    dn: dc=oss-d,dc=netobjectClass: dcObjectobjectclass: organizationdc: oss-do: oss-d.netdn: cn=Manager,dc=oss-d,dc=netobjectClass: organizationalRolecn: Managerdn: ou=Users,dc=oss-d,dc=netobjectClass: organizationalUnitou: Usersdn: ou=Group,dc=oss-d,dc=netobjectClass: organizationalUnitou: Group
  • 上記をldapaddコマンドで登録します。
    # ldapadd -x -D "cn=Manager,dc=oss-d,dc=net" -W -f object.ldif Enter LDAP Password:adding new entry "dc=oss-d,dc=net"adding new entry "cn=Manager,dc=oss-d,dc=net"adding new entry "ou=Users,dc=oss-d,dc=net"adding new entry "ou=Group,dc=oss-d,dc=net"
↑

ユーザ/グループの登録(既存unixアカウントをそのまま移行する)

ユーザ/グループの登録は、migrate_passwd.plというスクリプトを利用して既存のunixアカウントをLDAPサーバーへ登録します。

  • migrate_passwd.plの準備
    • 関連ファイル「/usr/share/openldap/migration/migrate_common.ph」を修正します。
      $DEFAULT_MAIL_DOMAIN = "oss-d.net";$DEFAULT_BASE = "dc=oss-d,dc=net";$NAMINGCONTEXT{'passwd'} = "ou=Users";

  • /etc/passwdのアカウントをLDAPへ登録する
    • 今回は/etc/passwdから一般ユーザのみを抽出するようuidが500番台のものに絞りました。
      # grep :5[0-9][0-9] /etc/passwd > user.txt
    • migrate_passwd.pl を利用してLDIFファイルを作成します。
      # /usr/share/openldap/migration/migrate_passwd.pl user.txt > user.ldif
    • ldapaddコマンドでLDIFファイルの内容を登録します。
      # ldapadd -x -D "cn=Manager,dc=oss-d,dc=net" -W -f user.ldif Enter LDAP Password:adding new entry "uid=hoge,ou=Users,dc=oss-d,dc=net"


  • /etc/groupのグループをLDAPへ登録する
    • 今回は/etc/passwdから一般グループのみを抽出するようgidが500番台のものに絞りました。
      # grep :5[0-9][0-9] /etc/group > group.txt
    • migrate_passwd.pl を利用してLDIFファイルを作成します。
      # /usr/share/openldap/migration/migrate_group.pl group.txt > group.ldif
    • ldapaddコマンドでLDIFファイルの内容を登録します。
      # ldapadd -x -D "cn=Manager,dc=oss-d,dc=net" -W -f group.ldifEnter LDAP Password:adding new entry "cn=hoge,ou=Group,dc=oss-d,dc=net"
↑

管理ツールの導入

Apache Directory Studio を参照

↑

バックアップ

↑

バックアップ方法

データのバックアップにはオンラインバックアップが可能なslapcatコマンド(データをLDIFファイル形式で出力)を利用します。

  • 全データをバックアップする場合は以下のようになります。
    # slapcat -l backup.ldif

  • 特定のサブディレクトリ配下をバックアップする場合は-sオプションを利用します。
    Users配下のバックアップを取る場合は以下のように指定します。
    # slapcat -s "ou=Users,dc=oss-d,dc=net" -l backup.ldif


↑

定期バックアップ

  • バックアップ要件は下記を前提として設定を行います。
・オンラインバックアップ
slapcatコマンドを利用
・定期バックアップ(1日1回)
cronを利用
・バックアップは10世代を管理する
logrotateを利用



  • 定期バックアップはcronを利用します。
    今回は毎日2時にバックアップするよう「crontab -e」コマンドで設定します。
    # crontab -e0 2 * * *  /usr/sbin/slapcat -l /backup/backup.ldif

  • 世代管理はlogrotateを利用します。
    設定ファイル「/etc/logrotate.d/ldap_backup」を下記内容で新規作成します。
    /backup/backup.ldif {    daily    missingok    notifempty    rotate 10}
・daily
毎日実行する
・missingok
ファイルが無くてもエラーを出さない
・notifempty
ファイルが空なら実行しない
・rotate 10
10世代残す

  • logrotate の確認を行います。
    # logrotate -dv /etc/logrotate.d/ldap_backupreading config file /etc/logrotate.d/ldap_backupreading config info for /backup/backup.ldifHandling 1 logsrotating pattern: /backup/backup.ldif  after 1 days (10 rotations)empty log files are not rotated, old logs are removedconsidering log /backup/backup.ldif  log /backup/backup.ldif does not exist -- skipping

    エラーの場合は下記のようなエラーがでます。
    error: /etc/logrotate.d/ldap_backup:2 unexpected text

    logrotateは毎日実行されますが、バックアップファイルが空の場合は実行されないため無駄にファイルが増えることはありません。
↑

リストア

slapcatでバックアップした場合のリストア手順を示します。

  1. ldapを停止します。
    # /etc/init.d/ldap stop
  2. データを全て削除します。
    # cd /var/lib/ldap# rm -rf *
  3. DB_CONFIGファイルを作成します。
    # cp -rp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
  4. slapadd コマンドでリストア後、ファイルの所有者を変更します。
    # slapadd -l /backup/backup.ldif.1# chown ldap:ldap *
  5. ldapを起動します。
    # /etc/init.d/ldap startslapd の設定ファイルをチェック中:  config file testing succeeded    [  OK  ]slapd を起動中:                                                   [  OK  ]
↑

その他

↑

各種コマンド

  • 検索
    # ldapsearch -x -b "dc=oss-d,dc=net" "objectclass=*"# ldapsearch -x -b "dc=oss-d,dc=net" "uid=hoge"
    LDAP側の設定によっては「-W -D 'cn=Manager,dc=oss-d,dc=net'」オプションを指定する必要があります。
  • 追加
    #ldapadd -x -D "cn=Manager,dc=oss-d,dc=net" -W -f user.ldif

  • 変更
    # ldapmodify -x -D "cn=Manager,dc=oss-d,dc=net" -W -f user.ldif   
    ※hogeユーザのhomeDirectoryを変更する場合、user.ldifは次のような内容になります。
    dn: uid=hoge,ou=Users,dc=oss-d,dc=nethomeDirectory: /home/newdir

  • 削除
    # ldapdelete -x -D "cn=Manager,dc=oss-d,dc=net" -W "uid=hoge,ou=Users,dc=oss-d,dc=net"

  • パスワード変更
    # ldappasswd -x -D 'cn=Manager,dc=exsample,dc=co,dc=jp' -W -S "uid=hoge,ou=Users,dc=oss-d,dc=net"
↑

FAQ

↑

起動時に「rootdn is always granted unlimited privileges.」と警告メッセージが表示される。

  • rootdnが常に全権限が持つ場合に表示されます。
    「/etc/openldap/slapd.conf」で下記のようなアクセス権があると表示されます。
    access to * by dn="cn=Manager,dc=oss,dc=dip,dc=jp" write
  • その場合は以下のように書き換えて下さい。
    #管理者は書き込み可能、その他のユーザは読み取り専用access to *  by self write  by * read
このエントリーをはてなブックマークに追加
Last-modified: 2010-09-10 (金) 14:13:16   最終更新のRSS