OpenLDAPの複数行にわたっての設定

一般的なものでしたら、改行自体をエスケープ文字でエスケープさせ、2行にわたった設定をしているかと思いますが、OpenLDAPは少々異なります。
OpenLDAPの場合、複数行にわけて設定することはほぼないかと思います。
ほとんどの設定が1行で済むような内容だからです。
そのため、複数行にわたるような設定だと何かしらエラーが発生してしまいます。
ですが、実は複数行にわたっての設定方法については明記されています。
今回はそれを開設しようと思います。

筆者の体感の話になってしまいますが、よく複数行で設定されているのを見かけるのは同期設定でしょうか。
1行にするには分かりづらく、複数行にするとOpenLDAPの特殊な書き方のせいでよく失敗していました(筆者も原因が分かるまでエラーを頻繁に出していました)

概要

OpenLDAPの複数行にわたっての設定(1つの設定を改行させ、前の行の続き設定を記載)について記載します。

環境

OSRHEL7.5
認証管理openldap-2.4.44-13.el7.x86_64

定義

OpenLDAPは複数の行で1つの設定を分けて書くことが可能でです。
前の行から複数行続けて同じパラメータを設定していることを本記事では「継続行」と定義します。

継続行の設定

方法

半角の空白文字を入れることで継続行とすることが可能です。

空白文字について

OpenLDAPの空白には2つの意味があります。

※注意事項
OpenLDAPの公式ドキュメントをGoogle翻訳にかけた文言を引用しているため、翻訳が正しくない場合もあります。

  • 空白行から始まるものは前の行の継続である

Blank lines and comment lines beginning with a '#' character are ignored. If a line begins with whitespace, it is considered a continuation of the previous line (even if the previous line is a comment).

'#' 文字で始まる空白行とコメント行は無視されます。
行が空白で始まる場合、前の行がコメントであっても、前の行の継続と見なされます。

OpenLDAP 2.4 Administrator's Guide
  • 空白は引数の区切り文字である

A configuration directive may take arguments. If so, they are separated by whitespace.

構成ディレクティブは引数を取る場合があります。
その場合、それらは空白で区切られます。

OpenLDAP 2.4 Administrator's Guide

OpenLDAPにとって空白とは、前の行の区切り文字であり、引数の区切り文字となります。
ですので、複数行にわけて1つの設定を書きたい場合、「改行された行の先頭に空白が2つ必要」、または「改行元の行の末尾に空白を1つ、改行された行の先頭に空白が1つ必要」というのが答えになります。

継続行として設定できてない場合はエラーが発生しますが、そのエラーも実は様々です。
そのため、複数行にわたっての設定をした時に何かしらのエラーが出てきた場合は「継続行の設定がおかしいのかも」と疑ってみることから始めると良いかと思います。

サンプル

やらかし設定

筆者が実際やらかした設定をご紹介します。
これは「見やすく空白を1つ入れておこう」と思った設定です。
そのため2行目以降は先頭に空白が1つ入っています。

olcSyncRepl: rid=001 provider=ldap://X.X.X.X:389
 bindmethod=simple binddn="cn=Manager,dc=testdomain,dc=com" credentials="testpasswd"
 searchbase="dc=testdomain,dc=com"
 schemachecking=on
 type=refreshAndPersist
 sizelimit=unlimited
 retry="60 10 300 3"

やらかしエラー

実際に上記設定を登録しようとして出たエラーがこちらです。

# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/syncprov.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)
        additional info: invalid URL

「invalid URL」と言われても分からず、色々実験し、空白を入れる・入れないで差があることが分かりました。
その観点からようやく継続行を認識し、正しく改行できてないことが判明しました。
先述したとおり、空白を1つではなく、2つ入れることによってエラーを回避することができています。

継続行としてうまく設定できない場合、基本的には設定方法を知らない場合が多いです。
今回はこのエラーが出ましたが、別の設定で複数行にした場合、全く別のエラーが発生すると思われます。
複数行にわたっての設定はお気を付けください。

技術情報

商標について

関連サービス

OSS導入支援
OSS保守サポート

お気軽にお問い合わせください。応対時間 9:30-17:30 [ 土・日・祝日除く ]

お問い合わせ