■OpenLDAPのインストール
CentOS7にOpenLDAPサーバをインストールし設定します。まず必要なパッケージをyumからインストールします。
# yum install openldap openldap-servers openldap-clients # rpm -qa | grep openldap openldap-2.4.39-3.el7.x86_64 openldap-servers-2.4.39-3.el7.x86_64 openldap-clients-2.4.39-3.el7.x86_64 |
OpenLDAP2.3からConfiguration Backendという機能がサポートされ、テキストファイルに記載して設定を実施するのではなく、LDIFファイルを適用して設定をデータベースに格納し管理する機能であり、リモートから設定変更が可能であったり変更後の再起動が不要などのメリットがあるのですが、やリ方が結構煩わしいので、ここでは従来のslapd.confを編集するやりかたで記載致します。
CentOS6まではslapd.confのサンプルファイル ( /usr/share/openldap-servers/slapd.conf.obsolete ) を/etc/openldapにコピーしていたのですが、CentOS7からはこのファイルすらもなくなったようです。仕方ないのでCentOS6のslapd.conf.obsoleteをとってきて/etc/openldapに配置しました。CentOS6でも7でもOpenLDAPのバージョンは全く同一です。
そしてslapd ( OpenLDAP ) 起動時にこのファイルを読み込むよう以下のように設定を変更します。
# cp slapd.conf.obsolete /etc/openldap/slapd.conf # vi /etc/sysconfig/slapd # Any custom options SLAPD_OPTIONS="-f /etc/openldap/slapd.conf" # 追記 |
ちなみにConfiguration Backendで使用する/etc/openldap/slapd.dを使用する場合はSLAPD_OPTIONSに以下を追記しておけば、slapd.confを元にslapd.d配下を自動生成してくれます。Configuration Backendを使用しない場合は以下の設定は不要です。
# Any custom options SLAPD_OPTIONS="-f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d" |
■DB_CONFIGの設置、設定
続けてDB_CONFIGファイルをコピーします。こちらはCentOS7上にも存在しますので以下のコマンドでコピーします。
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG |
上記のDB_CONFIGファイルに幾つかのパラメーターが設定されており、set_cachesizeとset_lg_bsizeについて記載します。
# one 0.25 GB cache set_cachesize 0 268435456 1 # Data Directory #set_data_dir db # Transaction Log settings set_lg_regionmax 262144 set_lg_bsize 2097152 #set_lg_dir logs |
以下、項目の説明です。
設定項目 | 説明 |
set_cachesize | DB内部のキャッシュサイズを設定。単位は左から順に <gbytes> <bytes> <ncache>となりキャッシュの大きさが<gbytes>と <bytes>の合計値となり、<ncache>で指定した数で分割され管理される。 |
set_lg_bsize | メモリ内に保持するトランザクションのログの大きさを指定します。 更新処理を頻繁に行う場合はこの値を大きくすることで高速化が期待できます。 |
1万数千人規模のLDAPサーバを運用しておりますが、上記のデフォルトの値のままで変更せず問題なく運用できておりますので、余程の大規模環境で無い限り、デフォルトのままで問題無いと思います。
■ログの設定
デフォルトでOpenLDAPはログをlocal4に吐き出すように設定されていますが、デフォルトでlocal4のsyslogはどこにも保存されないので保存されるようrsyslogの設定変更が必要です。
# vi /etc/rsyslog.conf # 以下を追記 *.info;mail.none;authpriv.none;cron.none;local4.none /var/log/messages local4.* /var/log/messages |
さらにslapdのログレベルの指定を行うことができます。実際の設定する数値は以下のデバッグレベルを元に必要な情報を選択しレベルの合算を設定します。例えば256の「コネクション、LDAP命令、結果」の内容と16384の「LDAP同期レプリケーション」の内容の両方を表示したい場合には合算した数値16640を設定します。
レベル | 名称 | 記録内容 |
0 | – | メッセージを出力しない |
1 | trace | slapd内部の関数のトレース |
2 | packets | パケット処理のデバック情報 |
4 | args | slapd内部の関数のトレースで引数も表示 |
8 | conns | コネクション管理 |
16 | BER | 送受信したパケット |
32 | filter | 検索フィルタ処理 |
64 | config | 設定ファイルに関する処理 |
128 | ACL | アクセス制御に関する処理 |
256 | stats | コネクション、LDAP命令、結果 |
512 | stats2 | 送られたエントリのステータス |
1024 | shell | シェルバックエンドとの通信 |
2048 | parse | エントリの解析処理 |
16384 | sync | LDAP同期レプリケーション |
32768 | none | どのログレベルにも属さないもの |
65535 | any | 全てのレベルを表示 |
デフォルトでは256が設定されていますので、ここから変更する場合は起動オプションで-sを使用して値を指定します。下記では-sを使用して512を指定する場合の例です。
# vi /etc/sysconfig/slapd # Options of slapd (see man slapd) SLAPD_OPTIONS="-f /etc/openldap/slapd.conf -s 512" |
■OpenLDAPの基本設定
LDAPの基本設定を行う事前準備としてManagerのパスワードをハッシュ化したものを予め準備しておきます。これにはslappasswdというコマンドを使って実行します。
# slappasswd New password:[パスワード入力] Re-enter new password:[パスワード再入力] {SSHA}HhD5qAGJHb0asfFkQbk7n1OjsPoFRrC0 |
{SSHA}と表記されているのはハッシュ文字列がSSHA形式であることを表しています。この文字列をエディタなどに貼り付けて保存しておきます。これでようやく設定を行う下準備が整いましたので上記で移動してきた/etc/openldap/slapd.confを編集していきます。
# vi /etc/openldap/slapd.conf <省略> # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn. (e.g., "access to * by * read") # # rootdn can always read and write EVERYTHING! # userPassword属性に対するアクセス制限 # Managerからは他のDNの参照および書き換えが可能 # search001~010までは読み込み可能 ( 他システムとのLDAP連携用アカウント ) # 匿名接続で認証し閲覧を許可。これを指定しない場合、ここに記載されたDNでしか接続できない # それ以外に関しては全てを禁止 access to attrs=userPassword by dn.exact="cn=Manager,dc=unix-power,dc=net" write by dn.exact="cn=search001,dc=unix-power,dc=net" read by dn.exact="cn=search002,dc=unix-power,dc=net" read by dn.exact="cn=search003,dc=unix-power,dc=net" read by dn.exact="cn=search004,dc=unix-power,dc=net" read by dn.exact="cn=search005,dc=unix-power,dc=net" read by dn.exact="cn=search006,dc=unix-power,dc=net" read by dn.exact="cn=search007,dc=unix-power,dc=net" read by dn.exact="cn=search008,dc=unix-power,dc=net" read by dn.exact="cn=search009,dc=unix-power,dc=net" read by dn.exact="cn=search010,dc=unix-power,dc=net" read by anonymous auth by * none # パスワード属性以外に対するアクセス制限 # Managerおよび自分自身からは参照および書き換えが可能 # search001~010までは読み込み可能 ( 他システムとのLDAP連携用アカウント ) # それ以外に関しては全てを禁止 access to * by self write by dn.exact="cn=Manager,dc=unix-power,dc=net" write by dn.exact="cn=search001,dc=unix-power,dc=net" read by dn.exact="cn=search002,dc=unix-power,dc=net" read by dn.exact="cn=search003,dc=unix-power,dc=net" read by dn.exact="cn=search004,dc=unix-power,dc=net" read by dn.exact="cn=search005,dc=unix-power,dc=net" read by dn.exact="cn=search006,dc=unix-power,dc=net" read by dn.exact="cn=search007,dc=unix-power,dc=net" read by dn.exact="cn=search008,dc=unix-power,dc=net" read by dn.exact="cn=search009,dc=unix-power,dc=net" read by dn.exact="cn=search010,dc=unix-power,dc=net" read by * none # Configuration Backendは使わないので以下をコメントアウト # enable on-the-fly configuration (cn=config) #database config #access to * # by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage # by * none # monitorデータベースに対するアクセス制限でご自身の環境に合わせて編集 # Managerがreadのみ可能でその他はアクセスできない # enable server status monitoring (cn=monitor) database monitor access to * # by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.exact="cn=Manager,dc=unix-power,dc=net" read by * none ####################################################################### # database definitions ####################################################################### # 自身の環境に合わせて編集 database bdb suffix "dc=unix-power,dc=net" checkpoint 1024 15 rootdn "cn=Manager,dc=unix-power,dc=net" # Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. # rootpw secret # 事前に出力したハッシュ化したパスワードを記述 rootpw {SSHA}HhD5qAGJHb0asfFkQbk7n1OjsPoFRrC0 <省略> |
編集が終われば作成したConfigファイルに問題がないか以下のコマンドでチェックします。
# slaptest -u -f /etc/openldap/slapd.conf -v config file testing succeeded |
ちなみにConfiguration Backendで使用する/etc/openldap/slapd.dを構築するには以下のコマンドを実行します。
# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d config file testing succeeded # chown -R ldap.ldap /etc/openldap/slapd.d/* |
最後にslapdサービスを有効化して起動します。
# systemctl enable slapd.service # systemctl start slapd.service |
■データの登録
初めてのLDAPサーバを起動した段階ではデータベースにディレクトリ情報が一切ありませんので登録するわけですが、その前に基本となるディレクトリ情報を登録します。登録内容は以下の図のようにします。
それ用のテキストファイル ( ldifファイル ) を用意してldapaddコマンドを適用して登録していきます。
ldapaddコマンドは標準入力からLDIFテキストフォーマットのLDAPエントリーのデータを読み込み、それをLDAPサーバに登録します。実際に使用する場合には以下のオプションでサーバとの通信方法を指定する必要があります。
オプション | 説明 |
-H <uri> | LDAPサーバを参照するURIを指定する。プロトコル、ホスト、ポートのみ指定できる。 指定しない場合、ldap://localhost:389となる。 |
-h <host> | LDAPサーバを指定する。指定しない場合、ローカルホストになる ( 非奨励オプション。-Hの使用を奨励 ) |
-p <port> | LDAPサーバのポート番号を指定する。指定しない場合、389となる ( 非奨励オプション。-Hの使用を奨励 ) |
-x | 簡易認証設定 |
-D <binddn> | LDAPサーバの認証に使うDN ( バインドDN ) を指定する。 指定しない場合は匿名接続となる。 |
-w <passwd> | LDAPサーバの認証に使うDNのパスワードを指定する。 |
-W | LDAPサーバの認証に使うDNのパスワードをプロンプトから入力することを指定する。 |
-f <file> | LDIFテキストフォーマットファイルを標準入力ではなく、指定したファイルから読み込む。 |
登録すべき情報はLDIF形式と呼ばれるテキストファイルに記述します。たとえば unix-power.netドメインの情報を登録する場合は以下のようなLDIFファイルを作成し、init.ldifファイルとして保存します。
● Managerの登録
# vi init.ldif dn: dc=unix-power,dc=net objectclass: dcObject objectclass: organization o: VIRTUAL CORPORATION dc: unix-power dn: cn=Manager,dc=unix-power,dc=net objectclass: organizationalRole cn: Manager |
LDIF ファイルにかいた情報をデータベースに登録するにはldapaddコマンドを使います。例えば上記ファイルを内容をデータベースに登録するには以下の ldapaddコマンドを実行します。すると-Dオプションで指定したユーザのパスワードを尋ねられますのでこれを入力します。認証に成功すると 「adding new entry~」というメッセージがエントリごとに表示されます。
# ldapadd -x -W -D "cn=Manager,dc=unix-power,dc=net" -f init.ldif Enter LDAP Password:[パスワード入力] adding new entry "dc=unix-power,dc=net" adding new entry "cn=Manager,dc=unix-power,dc=net" |
上記では-Wで対話的にパスワード入力していますが、-w ******でコマンドラインでも指定できます。続いてOUを登録します。同様に追加の内容を予めファイルに保存しておきまとめて実行します。
●検索用アカウントの登録
他のシステムとLDAP連携するためのsearch001~010アカウントを合わせて登録しておきます。
# vi search.ldif dn: cn=search001,dc=unix-power,dc=net objectclass: organizationalRole objectclass: simpleSecurityObject cn: search001 userPassword: {CRYPT}vxTKZHVjbclcM dn: cn=search002,dc=unix-power,dc=net objectclass: organizationalRole objectclass: simpleSecurityObject cn: search002 userPassword: {CRYPT}vxTKZHVjbclcM dn: cn=search003,dc=unix-power,dc=net objectclass: organizationalRole objectclass: simpleSecurityObject cn: search003 userPassword: {CRYPT}vxTKZHVjbclcM <省略> # ldapadd -x -W -D "cn=Manager,dc=unix-power,dc=net" -f search.ldif Enter LDAP Password:[パスワード入力] adding new entry "cn=search001,dc=unix-power,dc=net" adding new entry "cn=search002,dc=unix-power,dc=net" adding new entry "cn=search003,dc=unix-power,dc=net" <省略> |
● OU ( Organization Unit ) の登録
# vi add.ldif dn: ou=Users,dc=unix-power,dc=net objectclass: organizationalUnit ou: Users dn: ou=Groups,dc=unix-power,dc=net objectclass: organizationalUnit ou: Groups dn: ou=Computers,dc=unix-power,dc=net objectclass: organizationalUnit ou: Computers # ldapadd -x -W -D "cn=Manager,dc=unix-power,dc=net" -f add.ldif Enter LDAP Password:[パスワード入力] adding new entry "ou=Users,dc=unix-power,dc=net" adding new entry "ou=Groups,dc=unix-power,dc=net" adding new entry "ou=Computers,dc=unix-power,dc=net" |
●Groupの登録
# vi groupadd.ldif dn: cn=develop,ou=Groups,dc=unix-power,dc=net objectClass: posixGroup cn: develop gidNumber: 1000 dn: cn=sales,ou=Groups,dc=unix-power,dc=net objectClass: posixGroup cn: sales gidNumber: 1001 dn: cn=market,ou=Groups,dc=unix-power,dc=net objectClass: posixGroup cn: market gidNumber: 1002 # ldapadd -x -W -D "cn=Manager,dc=unix-power,dc=net" -f groupadd.ldif Enter LDAP Password:[パスワード入力] adding new entry "cn=develop,ou=Groups,dc=unix-power,dc=net" adding new entry "cn=sales,ou=Groups,dc=unix-power,dc=net" adding new entry "cn=market,ou=Groups,dc=unix-power,dc=net" |
●Userの登録
# vi useradd.ldif 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@unix-power.net dn: uid=suzuki,ou=Users,dc=unix-power,dc=net 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@unix-power.net dn: uid=tanaka,ou=Users,dc=unix-power,dc=net 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@unix-power.net "useradd.ldif" [New] 41L, 914C written [root@y-lab6 ~]# more useradd.ldif dn: uid=takeda,ou=Users,dc=unix-power,dc=net 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@unix-power.net dn: uid=suzuki,ou=Users,dc=unix-power,dc=net 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@unix-power.net dn: uid=tanaka,ou=Users,dc=unix-power,dc=net 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@unix-power.net # ldapadd -x -W -D "cn=Manager,dc=unix-power,dc=net" -f useradd.ldif Enter LDAP Password:[パスワード入力] adding new entry "uid=takeda,ou=Users,dc=unix-power,dc=net" adding new entry "uid=suzuki,ou=Users,dc=unix-power,dc=net" adding new entry "uid=tanaka,ou=Users,dc=unix-power,dc=net" |
各ユーザに登録するパスワードは次のようにしてslappasswdコマンドで予め作成しておきます。
# slappasswd -h '{CRYPT}' New password: Re-enter new password: {CRYPT}B5fKzlwfatuy2 |
slappaswdの引数の-hオプションは暗号化のタイプの指定です。nss-pam-ldapを使用する場合には暗号化方式には{CRYPT}にします。
■LDAPの削除 ( ldapdelete )
ldapdeleteはLDAPエントリの削除を行うためのコマンドです。削除するDNを指定して実行することでLDAPサーバの該当するDNを削除することができます。実際に利用する場合にはオプションでLDAPサーバとの通信方法を指定する必要があります。ldapdeleteで利用できるオプションは-fオプションを除いてldapaddと同様です。以下にユーザtanakaを削除する場合の例を示します。
# ldapdelete -x -W -D "cn=Manager,dc=unix-power,dc=net" "uid=tanaka,ou=Users,dc=unix-power,dc=net" |
■LDAPの検索 ( ldapsearch )
ldapsearchはLDAPに登録されているエントリの検索を行うためのコマンドです。検索フィルタを指定することで条件付き検索を行うことができます。また、表示する属性タイプを指定することもできます。実際に利用する場合にはオプションでLDAPサーバとの通信方法を指定する必要があります。ldapsearchでは以下のオプションを使用することができます。
オプション | 説明 |
-H <uri> | LDAPサーバを参照するURIを指定する。 プロトコル、ホスト、ポートのみ指定できる。 指定しない場合、ldap://localhost:389となる。 |
-h <host> | LDAPサーバを指定する。指定しない場合、ローカルホストになる ( 非奨励オプション。-Hの使用を奨励 ) |
-p <port> | LDAPサーバのポート番号を指定する。指定しない場合、389となる ( 非奨励オプション。-Hの使用を奨励 ) |
-x | 簡易認証設定 |
-D <binddn> | LDAPサーバの認証に使うDN ( バインドDN ) を指定する。 指定しない場合は匿名接続となる。 |
-w <passwd> | LDAPサーバの認証に使うDNのパスワードを指定する。 |
-W | LDAPサーバの認証に使うDNのパスワードをプロンプトから入力することを指定する。 |
-b | 検索の起点を指定。 例えばBaseDNに「ou=dept,dc=unix-power,dc=net」に指定した場合は 上位のエントリは検索対象外となります。 |
-s [Scope] | 検索範囲を指定します。[Scope]の値は「base」「one」「sub」の3種類です。 「base」はBaseDNエントリのみです。「one」はBaseDNエントリ自身と直下の エントリ、「sub」はBaseDN以下全てのエントリを指します。 -sに何も指定しなければ「sub」が適用されます。 |
[Filter] | 検索フィ ルタを指定します。例えば全てのエントリを抽出するには 「(objectclass=*)」を指定します。また、cn属性が「tanaka」で終わるエントリを 抽出するには「(cn=*tanaka)」とワイルドカードを指定できます。 その他、複数のフィルタを組み合わせたAND検索やOR検索も実行できます。 例えばcn属性が「tanaka」で終わり、かつcn属性が「taro」で始 まるエントリを 抽出するには「(&(cn=*tanaka)(cn=taro*))」とAND検索を表す&を使って 複数指定できます。OR検索には「|」、否定記号には「!」記号を使います。 |
[Attr] | 表示対象 とする属性を指定します。例えばあるエントリのtelephonenumber属性値を 表示対象にする場合はAttrにtelnephoneNumberを指定します。 何も指定しなければ全ての属性値が表示されます。 |
-L | 検索結果をLDIFv1フォーマットで表示する |
-LL | 検索結果をコメントのないフォーマットで表示する |
-LLL | 検索結果をコメント無し、LDIFバージョン表示なしで表示する。 |
ldapsearchの実行例を一つ上げます。この例ではLDAPサーバへの接続に簡易認証を使います。(-x)認証はユーザfooで試行し(-D)、パスワード入力用のプロンプトを画面に表示させます。(-W)検索の起点は出版部の住所録エントリで(-b)、それ以下全てのエントリを検索対象としています。(-s)また、cn属性値で名前を絞込み(‘(cn=*tanaka)’)、抽出されたエントリの勤務先電話番号(telephoneNuber)を表示します。
# ldapsearch -x -h ip-address -W -D "cn=search001,dc=unix-power,dc=net" ↑① -b "dc=unix-power,dc=net" -s sub '(uid=*tanaka)' telephoneNumber ↑② ↑③ ↑④ ↑⑤ ①:ユーザ(DN : cn=search001,dc=unix-power,dc=net)で接続する。 その際、パスワード入力用のプロンプトを表示する ②:検索の起点を「ou=Users,dc=unix-power,dc=net」とする ③:起点以下全てのエントリを検索対象とする ④:cn属性がtanakaで終わるエントリを抽出する ⑤:該当するエントリに格納される「telephoneNumber」属性値を表示する |
例えば特定の属性値のみ表示するのではなく、設定されている属性の値を全て表示するには上記の⑤を省略して実行すれば良いことになります。以下はuidがtanakaを条件にした検索例です。
# ldapsearch -x -W -D "cn=search001,dc=unix-power,dc=net" -b "ou=Users,dc=unix-power,dc=net" -s sub '(uid=tanaka)' Enter LDAP Password:[パスワード入力] # extended LDIF # # LDAPv3 # base <ou=Users,dc=unix-power,dc=net> with scope subtree # filter: (uid=tanaka) # requesting: ALL # # tanaka, Users, unix-power.net dn: uid=tanaka,ou=Users,dc=unix-power,dc=net objectClass: posixAccount objectClass: inetOrgPerson sn: tanaka cn: takuya displayName: Tanaka Takuya uid: tanaka uidNumber: 1002 gidNumber: 1000 homeDirectory: /home/tanaka loginShell: /bin/bash userPassword:: e0NSWVBUfUI1Zkt6bHdmYXR1eTI= mail: tanaka@unix-power.net # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 |
上記のように追加・削除・検索、そして既存データの修正などもLDIFファイルを用いて行うことが可能ですが、都度テキストファイルを用意して適用するのもわずわしいため、LDAPをGUIで操作するツールも無償公開されていたります。以下のページでOpenLDAPをGUIで操作するApache Directory Studioというのを紹介していますので参考にしてみてください。
http://www.unix-power.net/linux/ads.html
■OpenLDAPのバックアップ
OpenLDAPのデータファイルは/var/lib/ldapです。OSレベルでこの領域をバックアップしても良いのですがOpenLDAPでバックアップコマンドが提供されているのでこちらを使用します。ただし、この方法はOpenLDAPのデータの実体のみのバックアップなので/etc/openldap/slapd.confは別途バックアップしておく必要があります。実際のバックアップコマンドは下記のようになります。
# slapcat -l backup.ldif |
backup.ldifには以下のような内容で作成されています。
# more backup.ldif dn: dc=unix-power,dc=net objectClass: dcObject objectClass: organization o: VIRTUAL CORPORATION dc: unix-power structuralObjectClass: organization entryUUID: 9c06f28a-e5f5-1031-9b33-a71948dce7c2 creatorsName: cn=Manager,dc=unix-power,dc=net createTimestamp: 20121229112118Z entryCSN: 20121229112118.127129Z#000000#000#000000 modifiersName: cn=Manager,dc=unix-power,dc=net modifyTimestamp: 20121229112118Z <省略> |
バックアップは正常にとれているものの、このコマンドを実行した際にはThe first database does not allow slapcat; using the first available one (2)というwarning?らしきものが吐かれますがバックアップは正常にとれていますので問題ないと思われます。
■OpenLDAPのリストア
OpenLDAPをリストアします。リストアの動作確認のため現状のデータを丸ごと削除します。
# rm -rf /var/lib/ldap/* |
リストアを行うにはslapdを停止した上でslapaddコマンドを実施します。DB_CONFIGは全く編集していない状態なのでデフォルトのものをそのままコピーしています。
# systemctl stop slapd.service # cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # slapadd -l /root/backup.ldif The first database does not allow slapadd; using the first available one (2) _#################### 100.00% eta none elapsed none fast! Closing DB... # chown -R ldap.ldap /var/lib/ldap/* # systemctl start slapd.service |
これで正常にリストアが完了しました。