slapadd
slapaddは LDIF を OpenLDAP のデータベースへ直接投入する保守コマンド。
slapadd でバックアップを復元する前に、対象データベースを空にする。次の例は、Debian 系で通常データベースが /var/lib/ldap にある場合の手順である。
sudo systemctl stop slapd
sudo mv \ /var/lib/ldap \ /var/lib/ldap.before-restore
sudo install -d \ -o openldap \ -g openldap \ -m 700 \ /var/lib/ldap
sudo slapadd \ -n 1 \ -l backup.ldif
sudo chown -R openldap:openldap /var/lib/ldapsudo systemctl start slapdslapadd は slapd を通さずデータベースへ直接書き込む。復旧、大量初期投入、移行などで使う。
ldapaddとの違い
Section titled “ldapaddとの違い”| コマンド | 経路 | 主な用途 |
|---|---|---|
ldapadd |
LDAP プロトコル経由で slapd に追加させる |
通常運用の追加 |
slapadd |
データベースへ直接投入する | 復旧、大量投入、移行 |
日常的なユーザー追加には ldapadd を使う。 slapadd は通常運用の追加コマンドではない。
停止して使う
Section titled “停止して使う”slapadd は対象データベースを直接変更するため、通常は slapd を停止してから実行する。
投入後、データベースファイルの所有者が root になっていると slapd が読めないことがある。Debian 系では、必要に応じて /var/lib/ldap の所有者を openldap:openldap に戻す。
起動後、データが復元されていることを確認する。
sudo slapcat -b "dc=example,dc=com"sudo systemctl status slapd --no-pager復元に失敗した場合は、新しく作ったデータベースを別名へ退避し、 /var/lib/ldap.before-restore を元のパスへ戻せる。退避ディレクトリを上書きしないよう、実際の作業では日時を含む名前にすると安全である。
よく使うオプション
Section titled “よく使うオプション”| オプション | 意味 |
|---|---|
-n N |
データベース番号を指定する |
-b DN |
suffix DN でデータベースを指定する |
-l file |
読み込む LDIF ファイルを指定する |
-F path |
slapd.d 設定ディレクトリを指定する |
-c |
エラーがあっても処理を続ける |
Debian manpages
Section titled “Debian manpages”- slapadd(8) LDIF を OpenLDAP データベースへ直接投入する保守コマンド。