LoginSignup
32
34

More than 3 years have passed since last update.

CentOS7 + OpenLDAP最小構成の構築

Last updated at Posted at 2017-01-13

まえがき

OpenLDAP作るのは、社内の専門家の人にやってもらうのがほとんどなので、自分で作ることはまずないんだけど、ちょっとした用事で自前で作る必要があって、そのときに残したメモ。

とりあえず用意するだけっていうならこれでOKなはず。

ちなみに偉大な先人たちのほぼコピペです。ありがとうございます。

環境

CentOS 7(1503)

参考URL

準備

yum install openldap openldap-clients openldap-devel openldap-servers
cp -a /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
systemctl enable slapd
systemctl start slapd

実作業

基本パターンとして、OpenLDAPに何かを追加したいときはldapaddを使用して、何かを変更したいときはldapmodifyを使用する。
それぞれのコマンドで"-w"で指定するのはパスワード。
今回の場合、hogehogeをパスワードとして利用している。

サーバ管理者パスワード設定

slappasswdを使うとパスワード入力を求められるので、今後サーバ全体の管理者パスワードとして使用したい文字列を入力
そうするとハッシュ化された文字列が生成されるので、add_rootpw.ldifに入力

slappasswd
vim add_rootpw.ldif
ldapadd -Y EXTERNAL -H ldapi:// -f add_rootpw.ldif 
add_rootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: [slappasswdで出力されたハッシュ文字列を入力]

ベースDNの変更

vim mod_dom.ldif
ldapmodify -x -D cn=config -w hogehoge -f mod_dom.ldif 
mod_dom.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=example,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

データベース管理者のパスワード設定

ベースDNのデータベース管理者のパスワードを設定。
サーバ管理者だとベースDNへの書き込み権限を持たず、エントリの追加が弾かれてしまう。

slappasswd
vim add_adminpw.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f add_adminpw.ldif
add_adminpw.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: [slappasswdで出力されたハッシュ文字列を入力]

dcとかouとか追加

vim base.ldif
ldapadd -x -D "cn=Manager,dc=example,dc=com" -w hogehoge -f base.ldif 
base.ldif
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: Example Inc.

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group

スキーマ拡張

これやらないとユーザ追加するときにobjectClassないやでーって言われて弾かれるから必須

ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:// -f /etc/openldap/schema/nis.ldif 

ユーザ追加

vim add_user.ldif 
ldapadd -x -D "cn=Manager,dc=example,dc=com" -w hogehoge -f add_user.ldif 
add_user.ldif
dn: uid=0024a59b6ad0,ou=People,dc=example,dc=com
objectClass: posixAccount
objectClass: inetOrgPerson
sn: 0024a59b6ad0
cn: 0024a59b6ad0
uid: 0024a59b6ad0
displayName: 100
homeDirectory: /home/0024a59b6ad0
loginShell: /bin/bash
uidNumber: 1004
gidNumber: 1004
userPassword: 0024a59b6ad0

確認

これで全ユーザひっぱれる

ldapsearch -x -w hogehoge -D "cn=Manager,dc=example,dc=com" -b "ou=People,dc=example,dc=com"

おまけ(ユーザの属性変更)

vim mod_user.ldif
ldapmodify -x -D "cn=Manager,dc=example,dc=com" -w hogehoge -f mod_user.ldif
mod_user.ldif
dn: uid=0024a59b6ad0,ou=People,dc=example,dc=com
changetype: modify
replace: displayName
displayName: 999
32
34
1

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
32
34