LDAP の実装の一つ OpenLDAP について、簡単なコマンドサンプルを記載します。
インストール
LDAP サーバ slapd (Standalone LDAP Daemon)
LDAP クライアントコマンドのインストール
LDAP サーバ slapd の起動
systemctl を利用する場合は以下のように起動できます。
CentOS7、Debian9 の場合は、それぞれ以下の場所が LDAP ディレクトリとして利用されます。
LDAP コマンド例
初期設定の確認および管理者パスワードの変更
Debian9 の場合、既定で以下の LDAP ディレクトリに slapd の設定ファイルが作成されます。
管理者パスワードを生成します。(例: mypass
)
LDIF で追加します。以降、簡単のため echo で標準入力から設定しています。
RootDN の追加
LDAP は RDB 等と異なり参照が主であるため、検索が高速な木構造でデータを格納します。木構造のある階層には一つ以上のエントリが存在します。各エントリは一つ以上の属性および属性値を持っています。属性として必須のものとして cn
(common name) があります。cn
はある階層でエントリを一意に定めるための属性です。ディレクトリ情報ツリー全体でエントリを一意に定めるためには、各階層の cn
を連結すればよいことになります。これを dn
(distinguished name) とよびます。LDAP においては、ファイルシステムにおけるディレクトリのような枠となるエントリは存在せず、すべてファイルのような扱いとなり、各エントリはすべて属性および属性値を持ちます。
各エントリに設定する属性は、そのエントリのオブジェクトタイプに依ります。オブジェクトタイプの MUST 属性と MAY 属性にしたがってエントリの属性値を設定します。LDAP サーバには標準でオブジェクトタイプが用意されています。特に core.schema
は OpenLDAP で必ず提供されているスキーマファイルです。基本的にはこれらスキーマファイルで定義されているオブジェクトタイプを用いてエントリを追加していくことになります。
エントリを追加するために必要となる、木構造の RootDN cn=Manager,dc=mydomain,dc=local
は以下のコマンドで追加できます。
エントリの追加
以下のようなコマンドで RootDN 以下にエントリを追加できます。
dn: dc=mydomain,dc=local
dn: cn=Manager,dc=mydomain,dc=local
dn: ou=users,dc=mydomain,dc=local
上記三つのエントリを追加しています。
更に dn: ou=users,dc=mydomain,dc=local
以下にユーザエントリを追加してみます。
結果は既定では以下の場所に保存されます。
情報の検索
以下のようなコマンドで追加したエントリを検索できます。以下の二つのコマンドは認証方法が異なるだけで結果は同じです。
LDAP ディレクトリの設定情報も base (-b
) を指定して検索できます。
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- 使い所が難しいマイナーな運用コマンドコマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
- ipコマンドの基本的な使い方ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
- プロセス関連のコマンドプロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
- rpmとyumのチートシートrpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
- メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...