Linux
CentOS
openldap

CentOS7 + OpenLDAP最小構成の構築

まえがき

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: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}gWJiHlXNx+FxMwDjIbY2v4Wn8/YcrPza

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