Kの雑記

最近忘れやすいので、備忘録がわり

OpenLDAPデータベースの設定

OpenLDAPインストール後、以下の3つの設定が必要。

  1. LDAPデータベースツリーのDN ( olcSuffix )
  2. LDAPサーバの管理用のアクセス権である特権DN ( olcRootDN )
  3. 特権DNのパスワード ( olcRootPW )

 

LDAPデータベースツリーのDN

データベースツリーのDN → dc=hoge,dc=local

特権DN  → cn=Manager,dc=hoge,dc=local

特権DNのパスワード → slappasswdで生成

 

# ldapsearch -x -LLL -b 'olcDatabase={2}bdb,cn=config' -D cn=config -W

Enter LDAP Password:<設定用のPWD、特権DNのPWDでないので間違えないこと>

 

dn: olcDatabase={2}bdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {2}bdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=my-domain,dc=com
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=Manager,dc=my-domain,dc=com
olcSyncUseSubentry: FALSE
olcMonitoring: TRUE
olcDbCacheSize: 1000
olcDbCheckpoint: 1024 15
olcDbNoSync: FALSE
olcDbDirtyRead: FALSE
olcDbIDLcacheSize: 0
olcDbIndex: objectClass pres,eq
olcDbIndex: cn pres,eq,sub
olcDbIndex: uid pres,eq,sub
olcDbIndex: uidNumber pres,eq
olcDbIndex: gidNumber pres,eq
olcDbIndex: mail pres,eq,sub
olcDbIndex: ou pres,eq,sub
olcDbIndex: sn pres,eq,sub
olcDbIndex: givenName pres,eq,sub
olcDbIndex: loginShell pres,eq
olcDbIndex: memberUid pres,eq,sub
olcDbIndex: nisMapName pres,eq,sub
olcDbIndex: nisMapEntry pres,eq,sub
olcDbLinearIndex: FALSE
olcDbMode: 0600
olcDbSearchStack: 16
olcDbShmKey: 0
olcDbCacheFree: 1
olcDbDNcacheSize: 0

LDAPサーバの管理用のアクセス権である特権DN ( olcRootDN )

 LDAPエントリのデータ修正

設定ファイル

# vi 00.bdb-init.ldif 

# 設定を行うDNを指定
dn: olcDatabase={2}bdb,cn=config
# このLDIFファイルで修正を行うことを宣言します
changetype: modify
# olcRootDNを書き換えることを指定し値を指定する
replace: olcRootDN
olcRootDN: cn=Manager,dc=local
-
# olcSuffixを書き換えることを指定し値を指定する
replace: olcSuffix
olcSuffix: dc=local
-
# olcRootPWを追加することを指定し値を指定する
add: olcRootPW
olcRootPW: {SSHA}QfzKdfUvklhztTwNGS3P+HG0V9G7MPqo

 ファイルを適用

# ldapmodify -x -D cn=config -f 00.bdb-init.ldif -W
Enter LDAP Password:
modifying entry "olcDatabase={2}bdb,cn=config"

修正したことを確認

# ldapsearch -x -LLL  -b 'olcDatabase={2}bdb,cn=config' -D cn=config -W

変わってる

〜省略〜

olcDbCacheFree: 1
olcDbDNcacheSize: 0
olcRootDN: cn=Manager,dc=local
olcSuffix: dc=local
olcRootPW: {SSHA}QfzKdfUvklhztTwNGS3P+HG0V9G7MPqo

 初期データの登録

 

# vi 1.init.ldif

dn: dc=local
objectclass: dcObject
objectclass: organization
o: VIRTUAL CORPORATION
dc: local

dn: cn=Manager,dc=local
objectclass: organizationalRole
cn: Manager

 ファイルの登録、ここでのPWDは特権DN(Manager)のPWD

# ldapadd -x -W -D "cn=Manager,dc=local" -f 1.init.ldif
Enter LDAP Password:
adding new entry "dc=local"

adding new entry "cn=Manager,dc=local"

 続いてGroupsやUsersなどのOUを登録。これはユーザを入れておくディレクトリみたいなもの。Usersを作るのは納得だが、Groupsは必要かわからいけど、サンプルでは入れているしUNIXGIDみたいなもんだとの理解。

# vi 2.add-ou.ldif

dn: ou=vco,dc=local
ou: vco
objectclass: top
objectclass: organizationalUnit
 

# ldapadd -x -W -D "cn=Manager,dc=nttcom,dc=local" -f 2.add-ou.ldif
Enter LDAP Password:
adding new entry "ou=vco,dc=local"

 

 続いてユーザの追加。このユーザはシステム実行用のユーザで、個人用のユーザとは違う。なのでホームディレクトリとかは指定しない。

 

パスワードはあらかじめ作成しておく

# slappasswd -h '{CRYPT}'
'{CRYPT}'指定だとvROクライアントからログインできない?(Invalid Credentials (49)とか出る。よくわからん。

# vi 51.add-user-vcoexecuter.ldif

dn: cn=vcoadmin,ou=vco,dc=local
uid: vcoadmin
cn: vcoadmin
sn: vcoadmin
displayName: vCO Administrator
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
userPassword: {CRYPT}HNZyjHvVcVJ3o

dn: cn=vcouser,ou=vco,dc=local
uid: vcouser
cn: vcouser
sn: vcouser
displayName: vCO User
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
userPassword: {CRYPT}mSK7XyCKKym3Q

# ldapadd -x -W -D "cn=Manager,dc=local" -f 51.add-user-vcoexecuter.ldif
Enter LDAP Password:
adding new entry "cn=vcoadmin,ou=vco,dc=local"

 

グループの登録

# vi 3.add-group.ldif

dn: cn=vcoadmins,ou=vco,dc=local
objectClass: top
objectClass: groupOfNames
cn: vcoadmins
member: cn=vcoadmin,ou=vco,dc=local

dn: cn=vcousers,ou=vco,dc=local
objectClass: top
objectClass: groupOfNames
cn: vcousers
member: cn=vcouser,ou=vco,dc=local

 

# ldapadd -x -W -D "cn=Manager,dc=local" -f 3.add-group.ldif
Enter LDAP Password:
adding new entry "cn=vcoadmin,ou=vco,dc=local"

adding new entry "cn=vcouser,ou=vco,dc=local"

 

確認

# ldapsearch -x -W -D "cn=Manager,dc=local" -b "ou=vco,dc=local"
Enter LDAP Password:


# extended LDIF
#
# LDAPv3
# base <ou=vco,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# vco, local
dn: ou=vco,dc=local
ou: vco
objectClass: top
objectClass: organizationalUnit

# vcoadmin, vco, local
dn: cn=vcoadmin,ou=vco,dc=local
uid: vcoadmin
cn: vcoadmin
sn: vcoadmin
displayName:: dkNPIEFkbWluaXN0cmF0b3Ig
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword:: e0NSWVBUfUhOWnlqSHZWY1ZKM28=

# vcouser, vco, local
dn: cn=vcouser,ou=vco,dc=local
uid: vcouser
cn: vcouser
sn: vcouser
displayName:: dkNPIFVzZXIg
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword:: e0NSWVBUfW1TSzdYeUNLS3ltM1E=

# vcoadmins, vco, local
dn: cn=vcoadmins,ou=vco,dc=local
objectClass: top
objectClass: groupOfNames
cn: vcoadmins
member: cn=vcoadmin,ou=vco,dc=local

# vcousers, vco, local
dn: cn=vcousers,ou=vco,dc=local
objectClass: top
objectClass: groupOfNames
cn: vcousers
member: cn=vcouser,ou=vco,dc=local

# vcoadmin2, vco, local
dn: cn=vcoadmin2,ou=vco,dc=local
uid: vcoadmin2
cn: vcoadmin2
sn: vcoadmin2
displayName:: dkNPIEFkbWluaXN0cmF0b3Ig
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword:: e1NTSEF9QmpZSDFZMkZXQ3hYNnBCSVo4WmhESjdLKy9TMWlwQno=

# vcoadmins2, vco, local
dn: cn=vcoadmins2,ou=vco,dc=local
objectClass: top
objectClass: groupOfNames
cn: vcoadmins2
member: cn=vcoadmin2,ou=vco,dc=local

# search result
search: 2
result: 0 Success

# numResponses: 8
# numEntries: 7

 

 参考にした記事

CentOS6 OpenLDAPのインストールと基本設定