#RHEL8へOpenLDAPをインストール
OSのバージョンを確認
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.1 (Ootpa)
https://www.openldap.org/
から最新のソースコードをダウンロードしてマシンへ送信
# ls /tmp/openldap-2.5.5.tgz
/tmp/openldap-2.5.5.tgz
ソースコードを展開する
# cd /tmp
# tar xfz openldap-2.5.5.tgz
# cd openldap-2.5.5/
スクリプトを実行
--with-tls
TLS/SSLによる暗号通信を有効にします
-enable-crypt
cryptパスワードを有効にします
--with-cyrus-sasl
Cyrus SASLによるSASL認証を有効にします
-enable-rwm
書き換え機能(Rewrite/Remap)を有効にします
# ./configure --with-tls -enable-crypt --with-cyrus-sasl -enable-rwm
...
Please run "make depend" to build dependencies
ワーニングメッセージがなければコンパイルの実行
# make depend
# make
インストールの実行
# make install
設定ファイルの確認
# cat /usr/local/etc/openldap/slapd.conf |egrep -v '^#|^$'
include /usr/local/etc/openldap/schema/core.schema #①LDAPのデータベースで利用する属性を定義するスキーマファイルを読み込むます
pidfile /usr/local/var/run/slapd.pid #②slapdのプロセス番号を保管するファイルを指定します
argsfile /usr/local/var/run/slapd.args #③slapdが起動された引数の情報を保管するファイルを指定します
database config
database mdb #④LDAPデータを管理するデータベースを指定します
maxsize 1073741824 #⑤データベースで使用するデータベースサイズの最大サイズをバイト単位で指定します
suffix "dc=my-domain,dc=com" #⑥LDAPデータの識別名を指定します
rootdn "cn=Manager,dc=my-domain,dc=com" #⑦LDAPディレクトリ管理者(ルートDN)を設定します
rootpw secret #⑧ディレクトリ管理パスワード(ルートDNのパスワード)を設定します
directory /usr/local/var/openldap-data #⑨データベースを保管するディレクトリを指定します
index objectClass eq #⑩インデックスを管理すべき属性を指定します
database monitor
⑥~⑧を変更
ルートDNのパスワード設定
# slappasswd
New password:
Re-enter new password:
{SSHA}904gvYMd0lwUC9Vtj5FzkG2DnbvRWOg4
※passwd
設定を変更
# cp -p /usr/local/etc/openldap/slapd.conf /usr/local/etc/openldap/slapd.conf.org
# vi /usr/local/etc/openldap/slapd.conf
# cat /usr/local/etc/openldap/slapd.conf
include /usr/local/etc/openldap/schema/core.schema
pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args
##動的更新を行うための機能を有効にする設定
database config
rootdn cn=admin,cn=config
access to *
by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
by * break
##
database mdb
maxsize 1073741824
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw {SSHA}904gvYMd0lwUC9Vtj5FzkG2DnbvRWOg4
directory /usr/local/var/openldap-data
index objectClass eq
設定ディレクトリへの変換
# cd /usr/local/etc/openldap/
# rm -rf slapd.d
# mkdir slapd.d
# mkdir -p /usr/local/var/openldap-data
# slaptest -u -v -f slapd.conf
config file testing succeeded
# slaptest -f slapd.conf -F slapd.d
mdb_db_open: database "dc=example,dc=com" cannot be opened: No such file or directory (2). Restore from backup!
backend_startup_one (type=mdb, suffix="dc=example,dc=com"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch)
・エラーが表示されていても以下が作成されていれば問題なし
# ls slapd.d
'cn=config' 'cn=config.ldif'
syslogの設定
# cp -p /etc/rsyslog.conf /etc/rsyslog.conf.org
・最下行に追記
# vi /etc/rsyslog.conf
+#openldap slapd log
+local4.* /var/log/slapd
# systemctl restart rsyslog.service
slapdを起動
# /usr/local/libexec/slapd
# ps aux |grep slapd |grep -v grep
root 10608 0.0 0.1 1137884 5432 ? Ssl 20:03 0:00 /usr/local/libexec/slapd
・ログを確認
# cat /var/log/slapd
slapdを停止
# cat /usr/local/var/run/slapd.pid
10608
# kill -TERM 10608
# ps aux |grep slapd |grep -v grep
自動起動の設定
# vi /lib/systemd/system/slapd.service
# cat /lib/systemd/system/slapd.service
[Unit]
Description=OpenLDAP Server
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/var/run/slapd.pid
ExecStart=/usr/local/libexec/slapd -h "ldap:/// ldapi:///"
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
・systemctlコマンドで起動と停止が可能になる
# systemctl start slapd.service
# systemctl stop slapd.service
# systemctl enable --now slapd.service
Created symlink /etc/systemd/system/multi-user.target.wants/slapd.service → /usr/lib/systemd/system/slapd.service.
# systemctl status slapd.service
● slapd.service - OpenLDAP Server
Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-06-19 20:25:55 JST; 1min 38s ago
Process: 10917 ExecStart=/usr/local/libexec/slapd -h ldap:/// ldapi:/// (code=exited, status=0/SUCCESS)
Main PID: 10918 (slapd)
Tasks: 2 (limit: 23376)
Memory: 2.7M
CGroup: /system.slice/slapd.service
mq10918 /usr/local/libexec/slapd -h ldap:/// ldapi:///
基本データの投入
# mkdir -p /usr/local/etc/openldap/ldif
# vi /usr/local/etc/openldap/ldif/init.ldif
# cat /usr/local/etc/openldap/ldif/init.ldif
dn: dc=example,dc=com
objectClass: organization
objectClass: dcObject
o: example, INC.
dc: example
dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f /usr/local/etc/openldap/ldif/init.ldif
Enter LDAP Password:
adding new entry "dc=example,dc=com"
adding new entry "cn=Manager,dc=example,dc=com"
# cat /usr/local/etc/openldap/ldif/people-service.ldif
dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Services,dc=example,dc=com
objectClass: organizationalUnit
ou: Services
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f /usr/local/etc/openldap/ldif/people-service.ldif
Enter LDAP Password:
adding new entry "ou=People,dc=example,dc=com"
adding new entry "ou=Services,dc=example,dc=com"
ここまで
#参考
・『入門LDAP/OpenLDAP ディレクトリサービス導入・運用ガイド 第3版』