モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

OpenLDAP サンプルコマンド

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2018/10/25
最終更新最終更新
2021/02/03
記事区分記事区分
一般公開

LDAP の実装の一つ OpenLDAP について、簡単なコマンドサンプルを記載します。

インストール

LDAP サーバ slapd (Standalone LDAP Daemon)

sudo yum install openldap-servers
sudo apt install slapd

LDAP クライアントコマンドのインストール

sudo yum install openldap-clients
sudo apt install ldap-utils

LDAP サーバ slapd の起動

systemctl を利用する場合は以下のように起動できます。

systemctl is-enabled slapd.service
sudo systemctl start slapd.service
sudo systemctl status slapd.service

CentOS7、Debian9 の場合は、それぞれ以下の場所が LDAP ディレクトリとして利用されます。

sudo ls /etc/openldap/slapd.d
sudo ls /etc/ldap/slapd.d

LDAP コマンド例

初期設定の確認および管理者パスワードの変更

Debian9 の場合、既定で以下の LDAP ディレクトリに slapd の設定ファイルが作成されます。

$ ls /etc/ldap/slapd.d/
cn=config  cn=config.ldif

$ sudo cat /etc/ldap/slapd.d/cn\=config.ldif 
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 bec8a68f
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcLogLevel: none
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
structuralObjectClass: olcGlobal
entryUUID: 09b137f8-3421-1038-988a-fb4547d0d90f
creatorsName: cn=config
createTimestamp: 20180814151827Z
entryCSN: 20180814151827.197061Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20180814151827Z

管理者パスワードを生成します。(例: mypass)

$ /usr/sbin/slappasswd
New password: 
Re-enter new password: 
{SSHA}EVltfO5ymr5fm0kPBhEBw7GbzSn86AND

LDIF で追加します。以降、簡単のため echo で標準入力から設定しています。

echo 'dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}EVltfO5ymr5fm0kPBhEBw7GbzSn86AND
' | sudo ldapmodify -Y EXTERNAL -H ldapi://

RootDN の追加

LDAP は RDB 等と異なり参照が主であるため、検索が高速な木構造でデータを格納します。木構造のある階層には一つ以上のエントリが存在します。各エントリは一つ以上の属性および属性値を持っています。属性として必須のものとして cn (common name) があります。cn はある階層でエントリを一意に定めるための属性です。ディレクトリ情報ツリー全体でエントリを一意に定めるためには、各階層の cn を連結すればよいことになります。これを dn (distinguished name) とよびます。LDAP においては、ファイルシステムにおけるディレクトリのような枠となるエントリは存在せず、すべてファイルのような扱いとなり、各エントリはすべて属性および属性値を持ちます。

各エントリに設定する属性は、そのエントリのオブジェクトタイプに依ります。オブジェクトタイプの MUST 属性と MAY 属性にしたがってエントリの属性値を設定します。LDAP サーバには標準でオブジェクトタイプが用意されています。特に core.schema は OpenLDAP で必ず提供されているスキーマファイルです。基本的にはこれらスキーマファイルで定義されているオブジェクトタイプを用いてエントリを追加していくことになります。

$ sudo find /etc/ldap/ -name *.schema
/etc/ldap/schema/openldap.schema
/etc/ldap/schema/core.schema
/etc/ldap/schema/nis.schema
/etc/ldap/schema/collective.schema
/etc/ldap/schema/corba.schema
/etc/ldap/schema/cosine.schema
/etc/ldap/schema/java.schema
/etc/ldap/schema/pmi.schema
/etc/ldap/schema/dyngroup.schema
/etc/ldap/schema/duaconf.schema
/etc/ldap/schema/ppolicy.schema
/etc/ldap/schema/inetorgperson.schema
/etc/ldap/schema/misc.schema

エントリを追加するために必要となる、木構造の RootDN cn=Manager,dc=mydomain,dc=local は以下のコマンドで追加できます。

echo 'dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=mydomain,dc=local

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=mydomain,dc=local

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}EVltfO5ymr5fm0kPBhEBw7GbzSn86AND
' | sudo ldapmodify -Y EXTERNAL -H ldapi:///

エントリの追加

以下のようなコマンドで RootDN 以下にエントリを追加できます。

  • dn: dc=mydomain,dc=local
  • dn: cn=Manager,dc=mydomain,dc=local
  • dn: ou=users,dc=mydomain,dc=local

上記三つのエントリを追加しています。

echo 'dn: dc=mydomain,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o: mydomain.inc
dc: mydomain

dn: cn=Manager,dc=mydomain,dc=local
objectClass: organizationalRole
cn: Manager

dn: ou=users,dc=mydomain,dc=local
objectClass: organizationalUnit
ou: users
' | sudo ldapadd -x -D cn=Manager,dc=mydomain,dc=local -W

更に dn: ou=users,dc=mydomain,dc=local 以下にユーザエントリを追加してみます。

echo 'dn: uid=user001,ou=users,dc=mydomain,dc=local
objectClass: account
objectClass: posixAccount
uid: user001
cn: user001
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user001
loginShell: /bin/bash
' | sudo ldapadd -x -D cn=Manager,dc=mydomain,dc=local -W

結果は既定では以下の場所に保存されます。

$ sudo ls /var/lib/ldap/
data.mdb  lock.mdb

$ sudo strings /var/lib/ldap/data.mdb | grep user001 | sort | uniq
/home/user001
uid=user001
user001

情報の検索

以下のようなコマンドで追加したエントリを検索できます。以下の二つのコマンドは認証方法が異なるだけで結果は同じです。

ldapsearch -Y EXTERNAL -H ldapi:/// -b ou=users,dc=mydomain,dc=local
ldapsearch -x -D cn=Manager,dc=mydomain,dc=local -W -b ou=users,dc=mydomain,dc=local

LDAP ディレクトリの設定情報も base (-b) を指定して検索できます。

sudo ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config
Likeボタン(off)0
詳細設定を開く/閉じる
アカウント プロフィール画像

優しくしてください

記事の執筆者にステッカーを贈る

有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

>>さらに詳しくステッカーを贈る
ステッカーを贈る コンセプト画像

Feedbacks

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 /...
      けんちゃんけんちゃん11/1/2022に更新
      いいねアイコン画像0
    • ipコマンドの基本的な使い方
      ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
      こもれびさんこもれびさん2/8/2017に更新
      いいねアイコン画像0
    • プロセス関連のコマンド
      サムネイル画像-7b5901f600
      プロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
      kenken11/27/2021に更新
      いいねアイコン画像0
    • rpmとyumのチートシート
      サムネイル画像-f69c6665b8
      rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
      まるたんまるたん2/2/2022に更新
      いいねアイコン画像0
    • メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識
      メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...
      しおまめしおまめ8/30/2017に更新
      いいねアイコン画像0