2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OpenLDAPをソースインストールする

Last updated at Posted at 2021-06-20

#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版』

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?