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

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

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

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

OpenLDAP サンプルコマンド

モーダルを閉じる

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

モーダルを閉じる

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

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

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

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

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

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

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

目次

    アカウント プロフィール画像 (サイドバー)

    優しくしてください

    0
    ステッカーを贈るとは?

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