OpenLDAPしか触ってなかった人が389 Directory Serverを触ってみる

株式会社テイクーワンS.Nです。

今まで OpenLDAP しか触ってなかったのですが,遅ればせながらRed Hat社が推し進める 389 Directory Server に触れてみます。
Rocky Linux release 9.4 を使って 389 Directory Server のインストールと簡単なセットアップとデータ登録を行って検索できる状態まで作業してみます。

インストールドキュメントは公式サイトで用意されている以下を確認して作業しています。
【Install Guide】
https://www.port389.org/docs/389ds/legacy/install-guide.html

また,Red Hat社のドキュメントも確認しております。

【作業環境】

# cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)

パッケージインストール

RockyLinuxはパッケージで用意されているのでdnfコマンドで導入可能です。

# dnf install 389-ds-base

インストール確認すると下記パッケージが確認できます。

# rpm -qa | grep 389-ds
389-ds-base-libs-2.4.5-9.el9_4.x86_64
389-ds-base-2.4.5-9.el9_4.x86_64

インスタンスの作成と削除

インスタンスについて

389dsでは1つのディレクトリツリーを"インスタンス"という形で作成するようです。
OpenLDAP基本的には1サービスで1ツリーですが389dsの場合はインスタンスを複数立てることができ,1つのサービス内で複数のディレクトリツリーを構成することも可能なようです。
ただしサービスポートは重複しないようにする必要があります。

基本的には`/etc/dirsrv/`に
「slapd-"インスタンス名"」という形で作成されます。

また,インスタンス作成の際は予め用意されたテンプレートファイルを読み込む方式や対話形式で作成することができるようです。

テンプレートを利用した作成

まずはテンプレートファイルを作成し,必要な部分のみ修正して作成する方法を行ってみます。
こういった作業は何度も作り直しで試行錯誤が多いと思いますので基本的にはこのテンプレートファイルを作って作業するほうが良いかと思います。

【参考:第2章 新しい Directory Server インスタンスの設定】
https://access.redhat.com/documentation/ja-jp/red_hat_directory_server/11/html/installation_guide/assembly_setting-up-a-new-directory-server-instance_installation-guide

rootユーザを使い権限のある場所で`dscreate create-template `を実行してテンプレートファイルを作成してみます。

# dscreate create-template /root/instance_name.inf

できたものを参考に専用のインスタンスファイルを作っていきます。

# cp -p /root/instance_name.inf /root/389ds_take1.inf

この作成されたテンプレート内で管理者向けのパスワードの設定を行うようです。
平文でも登録できますが`pwdhash`を利用したものでも保存可能ですのでそちらを利用します。

# pwdhash -s SSHA512 foobarpassword
{SSHA512}PjDRAZSGPESiMvB7sBrSfOvNiL3CvI/xuN70JL1sf5vN5ZEEA45btuNL30W+nWnPIOdO/acW7RF0380m37l5GthjIDChq9gY

**【インスタンスファイルの設定項目】**
ドキュメントを参考に以下の設定で作ってみることにします。

instance_name:tk-1
root_password:指定のもの
create_suffix_entry:Trueにしてルートノードエントリを作成します
suffix:dc=tk-1,dc=co,dc=jpとして作成します。

下記の通りに編集します。

# vim /root/389ds_take1.inf
# diff -u /root/instance_name.inf /root/389ds_take1.inf
--- /root/instance_name.inf     2023-11-27 15:26:37.171313692 +0900
+++ /root/389ds_take1.inf       2023-11-27 15:29:22.676517060 +0900
@@ -38,7 +38,7 @@
 # instance_name (str)
 # Description: Sets the name of the instance. You can refer to this value in other parameters of this INF file using the "{instance_name}" variable. Note that this name cannot be changed after the installation!
 # Default value: localhost
-;instance_name = localhost
+instance_name = tk-1

 # ldapi (str)
 # Description: Sets the location of socket interface of the Directory Server.
@@ -53,7 +53,7 @@
 # root_password (str)
 # Description: Sets the password of the "cn=Directory Manager" account ("root_dn" parameter).You can either set this parameter to a plain text password dscreate hashes during the installation or to a "{algorithm}hash" string generated by the pwdhash utility. The password must be at least 8 characters long.  Note that setting a plain text password can be a security risk if unprivileged users can read this INF file!
 # Default value: Directory_Manager_Password
-;root_password = Directory_Manager_Password
+root_password = {SSHA512}PjDRAZSGPESiMvB7sBrSfOvNiL3CvI/xuN70JL1sf5vN5ZEEA45btuNL30W+nWnPIOdO/acW7RF0380m37l5GthjIDChq9gY

 # secure_port (int)
 # Description: Sets the TCP port the instance uses for TLS-secured LDAP connections (LDAPS).
@@ -84,7 +84,7 @@
 # create_suffix_entry (bool)
 # Description: Set this parameter to "True" to create a generic root node entry for the suffix in the database.
 # Default value: False
-;create_suffix_entry = False
+create_suffix_entry = True

 # enable_replication (bool)
 # Description: Enable replication for this backend.  By default it will setup the backend as a supplier, with replica ID 1, and "cn=replication manager,cn=config" as the replication binddn.
@@ -129,5 +129,5 @@
 # suffix (str)
 # Description: Sets the root suffix stored in this database.  If you do not uncomment and set the suffix attribute the install process will NOT create the backend/suffix.  You can also create multiple backends/suffixes by duplicating this section.
 # Default value:
-;suffix =
+suffix = dc=tk-1,dc=co,dc=jp

このファイルを`dscreate`コマンドに渡すことで作成します。
※この環境ではselinuxを無効にしていたのでラベル付けしなかった旨がでています。

# dscreate from-file /root/389ds_take1.inf
Starting installation ...
Validate installation settings ...
Create file system structures ...
Create self-signed certificate database ...
selinux is disabled, will not relabel ports or files.
selinux is disabled, will not relabel ports or files.
Create database backend: dc=tk-1,dc=co,dc=jp ...
Perform post-installation tasks ...
Completed installation for instance: slapd-tk-1

`slapd-tk-1`としてインスタンスが作成されました。
インスタンス名の前の「slapd」についてては強制付与されています。
尚,色々な389dsのコマンドで引数として渡す場合は省略しても大丈夫なようです。

# ls -ltr /etc/dirsrv/
合計 24
drwxr-xr-x 4 root   root   4096 10月 25  2023 work
drwxr-xr-x 2 root   root   4096 11月 28  2023 tk1_work
drwxr-xr-x 2 root   root   4096  9月 11 11:01 schema
drwxr-xr-x 2 root   root   4096  9月 11 11:01 config
drwxrwx--- 2 root   root   4096  9月 11 11:06 ssca
drwxrwx--- 3 dirsrv dirsrv 4096  9月 11 11:06 slapd-tk-1

ApacheDirectoryStudioで確認すると以下のようにルートのみ作成してくれた状態で出来上がっているのが確認できます。

インスタンスの削除について

構築においては何かしら最初からやりなおしたい場合もあるかと思います。
インスタンスの削除については`dsctl "インスタンス名" remove`コマンドで簡単に削除できます。

次に対話型で再作成するためにも一度インスタンスを削除します。

# dsctl tk-1 stop
Instance "tk-1" has been stopped
# dsctl tk-1 remove --do-it
Removing instance ...
selinux is disabled, will not relabel ports or files.
selinux is disabled, will not relabel ports or files.
selinux is disabled, will not relabel ports or files.
selinux is disabled, will not relabel ports or files.
Completed instance removal
# ls -l /etc/dirsrv/
合計 20
drwxr-xr-x 2 root root 4096  9月 11 11:01 config
drwxr-xr-x 2 root root 4096  9月 11 11:01 schema
drwxrwx--- 2 root root 4096  9月 11 11:05 ssca
drwxr-xr-x 2 root root 4096 11月 28  2023 tk1_work
drwxr-xr-x 4 root root 4096 10月 25  2023 work

対話形式でのインスタンス作成

`dscreate interactive`を使えば対話形式で作成できるようなのでこちらも試してみます。
[yes]などは予め入っている値で,変更がなければEnter応答で利用されるようです。

# dscreate interactive
Install Directory Server (interactive mode)
===========================================
selinux is disabled, will not relabel ports or files.

Selinux support will be disabled, continue? [yes]:

Enter system's hostname ["構築中サーバホスト名"]:

Enter the instance name ["構築中サーバホスト名"]: tk-1

Enter port number [389]:

Create self-signed certificate database [yes]:

Enter secure port number [636]:

Enter Directory Manager DN [cn=Directory Manager]:

Enter the Directory Manager password: "(登録したいパスワードを応答)"
Confirm the Directory Manager Password: "(登録したいパスワードを応答)"

Enter the database suffix (or enter "none" to skip) [dc=fuoo,dc=co,dc=jp]: dc=tk-1,dc=co,dc=jp

Create sample entries in the suffix [no]: yes

Do you want to start the instance after the installation? [yes]:

Are you ready to install? [no]: yes
Starting installation ...
Validate installation settings ...
Create file system structures ...
Create self-signed certificate database ...
selinux is disabled, will not relabel ports or files.
selinux is disabled, will not relabel ports or files.
Create database backend: dc=tk-1,dc=co,dc=jp ...
Perform post-installation tasks ...
Completed installation for instance: slapd-tk-1

サンプル作成をyes応答したので以下のように作成してくれています。

データの登録

ouの作成

いよいよ次はデータを投入してみます。
389dsでもOpenLDAPと同様にLDIFファイルで可能なようです。
OpenLDAPで運用管理した経験があれば特に問題ないかと思います。

LDIFファイルを以下のように作成します。

# cat add_system4_ou.ldif
dn: ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: system4

OpenLDAPと同様に`ldapadd`コマンドで追加します。

# ldapadd -H ldap://localhost -D "cn=Directory Manager" -W  -f add_system4_ou.ldif
Enter LDAP Password:
adding new entry "ou=system4,dc=tk-1,dc=co,dc=jp"

ouが作成されていることを確認します。
これもOpenLDAP同様に`ldapsearch`で確認できます。

# ldapsearch -LLL -H ldap://localhost -D "cn=Directory Manager" -W
Enter LDAP Password:
dn: dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: domain
dc: tk-1
description: dc=tk-1,dc=co,dc=jp

dn: ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: system4

ちなみにこれは管理者アカウントの「cn=Directory Manager」でバインドしてますのでACI未設定でも結果が表示されています。

Apache Directory Studioで確認するとこのような感じになります。

ユーザの登録

これもOpenLDAPと同様にLDIFで登録を行うことができます。
既存のOpenLDAP環境からのデータ引っ越しも可能ということですね。

私の情報を以下の通り作成します。

# cat add_nomura.ldif
dn: uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: posixAccount
userPassword:: e01ENX1xTnA0dXJNNVpHeXArS2FpN2ZSell3PT0=
uid: nomuras
cn: NOMURA SHOUICHIRO
uidNumber: 54321
gidNumber: 100
gecos: NOMURA SHOUICHIRO
homeDirectory: /home/system4/nomuras
loginShell: /bin/bash

`ldapadd`コマンドで登録します。

# ldapadd -H ldap://localhost -D "cn=Directory Manager" -W  -f add_nomura.ldif
Enter LDAP Password:
adding new entry "uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp"

作成できていることを確認します。

# ldapsearch -LLL -H ldap://localhost -D "cn=Directory Manager" -b "ou=system4,dc=tk-1,dc=co,dc=jp" -W
Enter LDAP Password:
dn: ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: organizationalUnit
ou: system4

dn: uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: posixAccount
uid: nomuras
cn: NOMURA SHOUICHIRO
uidNumber: 54321
gidNumber: 100
gecos: NOMURA SHOUICHIRO
homeDirectory: /home/system4/nomuras
loginShell: /bin/bash
userPassword:: e01ENX1xTnA0dXJNNVpHeXArS2FpN2ZSell3PT0=

確認するとユーザ作成され,このような形で各属性値が格納されていることがわかります。

ユーザ参照用ユーザの作成

実際の運用を想定し管理者とは別に参照用のユーザも作成します。

以下のとおりLDIFを作成します。

# cat add_kanri_users.ldif
dn: cn=ldapReadUser,dc=tk-1,dc=co,dc=jp
objectClass: person
cn: ldapReadUser
sn: ldapReadUser
userPassword:: e1NTSEF9MjBOYklROVBBMFVOaW9Ed2N2T09tMHRQZFhiM3hyN0k=

他のユーザと同様に投入します。

# ldapadd -H ldap://localhost -D "cn=Directory Manager" -W  -f add_kanri_users.ldif
Enter LDAP Password:
adding new entry "cn=ldapReadUser,dc=tk-1,dc=co,dc=jp"

サーチして追加されていることを確認します。

# ldapsearch -LLL -H ldap://localhost -D "cn=Directory Manager" -b "cn=ldapReadUser,dc=tk-1,dc=co,dc=jp" -W
Enter LDAP Password:
dn: cn=ldapReadUser,dc=tk-1,dc=co,dc=jp
objectClass: person
objectClass: top
cn: ldapReadUser
sn: ldapReadUser
userPassword:: e1NTSEF9MjBOYklROVBBMFVOaW9Ed2N2T09tMHRQZFhiM3hyN0k

別の社員を追加

このあと行うアクセス制御の検証用にもう1名社員を追加します。

同様にLDIFを作成します。

# cat add_syain1.ldif
dn: uid=syain1,ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: posixAccount
userPassword:: e01ENX02RHRCNTBscHo1NzN2OU9BYkY1bStRPT0=
uid: syain1
cn: TAKE ONE1
uidNumber: 54322
gidNumber: 100
gecos: TAKE ONE1
homeDirectory: /home/system4/syain1
loginShell: /bin/bash

追加します。

# ldapadd -H ldap://localhost -D "cn=Directory Manager" -W  -f add_syain1.ldif
Enter LDAP Password:
adding new entry "uid=syain1,ou=system4,dc=tk-1,dc=co,dc=jp"

検索すると以下の通りです。

# ldapsearch -LLL -H ldap://localhost -D "cn=Directory Manager" -b "uid=syain1,ou=system4,dc=tk-1,dc=co,dc=jp" -W
Enter LDAP Password:
dn: uid=syain1,ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: posixAccount
uid: syain1
cn: TAKE ONE1
uidNumber: 54322
gidNumber: 100
gecos: TAKE ONE1
homeDirectory: /home/system4/syain1
loginShell: /bin/bash
userPassword:: e01ENX02RHRCNTBscHo1NzN2OU9BYkY1bStRPT0=

ここまでのデータ投入結果をみると以下のような状態になります。

アクセス権(ACI)の設定

アクセス権(ACI)の設定

初期の設定では管理者以外には権限がなく,自分自身の情報すら取得できません。

このあたりは運用方針にもよると思いますが今回は自分自身の情報はPWで引けるようにと,参照ユーザを用意して全ユーザの読み出しをできるようにします。

参考ドキュメント
【9.7. アクセス制御の設計】
https://docs.redhat.com/ja/documentation/red_hat_directory_server/11/html/deployment_guide/designing_a_secure_directory-designing_access_control

初期設定を実際に確認してみる

特に設定がない場合は管理者アカウント以外,全拒否のようです。

例えば,自分(nomuras)でバインドして自分の情報を検索しようとしても権限がないので検索はされるものの結果が表示されません。

# ldapsearch -H ldap://localhost -D "uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp" -b "uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp" uid=nomuras -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: uid=nomuras
# requesting: ALL
#

# search result
search: 2
result: 0 Success

# numResponses: 1

管理者アカウント(Directory Manager)の場合は以下の通り可能です。

# ldapsearch -LLL -H ldap://localhost -D "cn=Directory Manager" -b "ou=system4,dc=tk-1,dc=co,dc=jp"  uid=nomuras -W
Enter LDAP Password:
dn: uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: posixAccount
uid: nomuras
cn: NOMURA SHOUICHIRO
uidNumber: 54321
gidNumber: 100
gecos: NOMURA SHOUICHIRO
homeDirectory: /home/system4/nomuras
loginShell: /bin/bash
userPassword:: e1BCS0RGMi1TSEE1MTJ9MTAwMDAkRmdzcUpHMWtZOWQ2UDUxQ250ZEJXdzJBNk5
 qNGJBWUQkY2JRdUJYc1dPMHd2R2JSdjI4SmJkTTNtQU9kZXZpUjZFZTlHMkV0dE9iTjJTT0xtRHk5
 ejA3WTh4UVo3V2dVSFpqSlM3bjZmYnZ6cEtXdW1EbEhSN0E9PQ==

ここからACI調整して運用目的にあった状態にしていきます。

オブジェクトクラスの把握とOpenLDAPとの違いなど

そもそもLDIFを投入する時点で確認しているとは思いますが,
ACIを設定する前にあらためて,利用するオブジェクトクラスを確認します。

今回は主にUNIX/Linuxシステムのユーザーアカウント情報を格納するために使用される`objectClass: posixAccount`を付与していますので制御すべき属性は以下になります。

posixAccountの主な属性
uid (User ID): ユーザー名。UNIX/Linuxシステムでのログイン名を示します。
uidNumber: ユーザーID番号。システム上でユーザーを一意に識別するための数値です。
gidNumber: グループID番号。このユーザーのプライマリグループを識別する数値です。
homeDirectory: ホームディレクトリのパス。ユーザーのホームディレクトリの場所を示します。
loginShell: ログインシェルのパス。ユーザーがログイン時に使用するシェルを指定します。
gecos: ユーザーの全名や連絡先情報などの追加情報を格納するためのフィールド。
userPassword: ユーザーのパスワード。LDAP内で暗号化されて格納されます。
cn (Common Name): ユーザーのフルネームなどの共通名。

 

OpenLDAPしか触ってない私が気になった点としては以下でした。

  • 継承してないobjectClassはtargetattrに記載が必要
  • OpenLDAPは read があれば,search も同時にできるが389dsではそうではない
  • OpenLDAPの read を置き換える場合は(read, search, compare)の3つが必要になる

例えば,ldapsearchでバインドしたユーザが結果表示したい場合は allow (read, search, compare)が必要となります。

具体的なACI設定

ドキュメントを読みつつ試行錯誤がありましたが,最終的こんな形で設定してみました。

# cat add_aci_system4.ldif
## ACIセット用。既存のopenldapの設計思想に則る
##
## write ... 書き込み
## read ... 読み込み
## search ...検索
## compare ... 比較
##
## openldap時代はreadを設定しておけば対象属性に対して searchもcompareも含まれていたが
## 389dsでは,allow (read, search, compare)のように3つそれぞれ指定が必要なので注意

## ou=system4に対してのaci制御を行う
## ここは基本的にだれでも読み込める設定を行う
dn: ou=system4,dc=tk-1,dc=co,dc=jp
changetype: modify
add: aci
aci: (targetattr="dc || objectClass")
 (targetfilter="(objectClass=dcObject)")
 (version 3.0; acl "Enable anyone dcObject read"; allow (read, search, compare)
 (userdn="ldap:///anyone");)
-
add: aci
aci: (targetattr="ou || description || objectClass")
 (targetfilter="(objectClass=organizationalUnit)")
 (version 3.0; acl "Enable anyone ou read"; allow (read, search, compare)
 (userdn="ldap:///anyone");)

## ldapReadUser … 参照用ユーザ
## 読み込み全般OK
dn: ou=system4,dc=tk-1,dc=co,dc=jp
changetype: modify
## ldapReadUserがreadできるposixAccountt
add: aci
aci: (targetattr="uid || userPassword || cn || mail || gecos || uidNumber || gidNumber || loginShell || homeDirectory || description || objectClass")
 (targetfilter="(objectClass=posixAccount)")
 (version 3.0; acl "Enable read Attri for ldapReadUser"; allow (read, search, compare)
 (userdn="ldap:///cn=ldapReadUser,dc=tk-1,dc=co,dc=jp");)

## self … 現在接続しているユーザのDNでの許可
dn: ou=system4,dc=tk-1,dc=co,dc=jp
changetype: modify
## 本人がreadできるposixAccountt
add: aci
aci: (targetattr="uid || userPassword || cn || mail || gecos || uidNumber || gidNumber ||  loginShell || homeDirectory || objectClass")
 (targetfilter="(objectClass=posixAccount)")
 (version 3.0; acl "Enable read Attri for self"; allow (read, search, compare)
 (userdn="ldap:///self");)
-
## 本人はsearchのみposixAccountt
add: aci
aci: (targetattr="description || objectClass")
 (targetfilter="(objectClass=posixAccount)")
 (version 3.0; acl "Enable search Attri for self"; allow (search)
 (userdn="ldap:///self");)

投入します。

# ldapadd -H ldap://localhost -D "cn=Directory Manager" -W  -f add_aci_system4.ldif
Enter LDAP Password:
modifying entry "ou=system4,dc=tk-1,dc=co,dc=jp"

modifying entry "ou=system4,dc=tk-1,dc=co,dc=jp"

modifying entry "ou=system4,dc=tk-1,dc=co,dc=jp"

確認すると各ACIが登録されているのがわかります。

動作の確認

自分自身をldapsearchしてみます。
ACI設定前は結果が出なかったものが表示されました。

# ldapsearch -H ldap://localhost -D "uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp" -b "ou=system4,dc=tk-1,dc=co,dc=jp" uid=nomuras -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: uid=nomuras
# requesting: ALL
#

# nomuras, system4, tk-1.co.jp
dn: uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: posixAccount
uid: nomuras
cn: NOMURA SHOUICHIRO
uidNumber: 54321
gidNumber: 100
gecos: NOMURA SHOUICHIRO
homeDirectory: /home/system4/nomuras
loginShell: /bin/bash
userPassword:: e1BCS0RGMi1TSEE1MTJ9MTAwMDAkZmlpUnFQVUlRZnVSMGhiQkoxMGtVTDVDYUh
 oWUxTT0IkNWFtODVKZmJJS2pjcHMvK2h5cHdWMHExZFBJWHpzbk9OVTZkT2FLWnQ3eGphNytMY2Fm
 RXZjUklVU2pQZXEvY2NvSnZQQW92RXBQTU1NMEd1RWovQ3c9PQ==

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

次に他人(syain1)は検索しても表示されない事を確認します。
想定通り`syain1`の情報は表示されませんでした。

# ldapsearch -H ldap://localhost -D "uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp" -b "ou=system4,dc=tk-1,dc=co,dc=jp" uid=syain1 -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: uid=syain1
# requesting: ALL
#

# search result
search: 2
result: 0 Success

# numResponses: 1

次に参照用ユーザを確認します。
こちらのユーザは2名ともに結果が表示されることを期待します。

nomurasを検索して結果は表示されました。

# ldapsearch -H ldap://localhost -D "cn=ldapReadUser,dc=tk-1,dc=co,dc=jp" -b "dc=tk-1,dc=co,dc=jp" -W uid=nomuras
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: uid=nomuras
# requesting: ALL
#

# nomuras, system4, tk-1.co.jp
dn: uid=nomuras,ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: posixAccount
uid: nomuras
cn: NOMURA SHOUICHIRO
uidNumber: 54321
gidNumber: 100
gecos: NOMURA SHOUICHIRO
homeDirectory: /home/system4/nomuras
loginShell: /bin/bash
userPassword:: e1BCS0RGMi1TSEE1MTJ9MTAwMDAkZmlpUnFQVUlRZnVSMGhiQkoxMGtVTDVDYUh
 oWUxTT0IkNWFtODVKZmJJS2pjcHMvK2h5cHdWMHExZFBJWHpzbk9OVTZkT2FLWnQ3eGphNytMY2Fm
 RXZjUklVU2pQZXEvY2NvSnZQQW92RXBQTU1NMEd1RWovQ3c9PQ==

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

syain1も同様に表示されています。

# ldapsearch -H ldap://localhost -D "cn=ldapReadUser,dc=tk-1,dc=co,dc=jp" -b "dc=tk-1,dc=co,dc=jp" -W uid=syain1
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: uid=syain1
# requesting: ALL
#

# syain1, system4, tk-1.co.jp
dn: uid=syain1,ou=system4,dc=tk-1,dc=co,dc=jp
objectClass: top
objectClass: posixAccount
uid: syain1
cn: TAKE ONE1
uidNumber: 54322
gidNumber: 100
gecos: TAKE ONE1
homeDirectory: /home/system4/syain1
loginShell: /bin/bash
userPassword:: e01ENX02RHRCNTBscHo1NzN2OU9BYkY1bStRPT0=

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

終わりに

以上で389 Directory Serverの立ち上げからデータ投入。検索までができました。
他にも,TLS設定もOpenLDAPとは違い一癖ありますので次回はそのあたりが記載できたらと思っております。

【Install Guide】
https://www.port389.org/docs/389ds/legacy/install-guide.html

【第2章 新しい Directory Server インスタンスの設定】
https://access.redhat.com/documentation/ja-jp/red_hat_directory_server/11/html/installation_guide/assembly_setting-up-a-new-directory-server-instance_installation-guide

【9.7. アクセス制御の設計】
https://docs.redhat.com/ja/documentation/red_hat_directory_server/11/html/deployment_guide/designing_a_secure_directory-designing_access_control

前へ

疲労が軽減されるおすすめエルゴノミクスマウス