よく使うコマンド
config確認
$ ldapsearch -L -Y EXTERNAL -H ldapi:/// -b cn=config dn
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
version: 1
#
# LDAPv3
# base <cn=config> with scope subtree
# filter: (objectclass=*)
# requesting: dn
#
# config
dn: cn=config
# schema, config
dn: cn=schema,cn=config
# {0}core, schema, config
dn: cn={0}core,cn=schema,cn=config
# {-1}frontend, config
dn: olcDatabase={-1}frontend,cn=config
# {0}config, config
dn: olcDatabase={0}config,cn=config
# {1}monitor, config
dn: olcDatabase={1}monitor,cn=config
# {2}hdb, config
dn: olcDatabase={2}hdb,cn=config
# search result
# numResponses: 8
# numEntries: 7
データベースの確認
olcDatabase={2}hdb,cn=config
の部分は、サーバーによって違うかもしれないので、configで確認する。
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={2}hdb,cn=config'
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
olcSuffix: dc=hogehoge,dc=or,dc=jp
olcRootDN: cn=Manager,dc=hogehoge,dc=or,dc=jp
olcRootPW: {SSHA}-----------------------
登録データの確認
# ldapsearch -H ldapi:/// -b 'ou=****, dc=***, dc=***'
全体の管理
ldifを実行する時には、ldapadd -f /path/to/file.ldif
が基本。
ldapサーバー上のrootアカウントで作業をする時は、-Y EXTERNAL
オプションをつけてパスワード入力をスキップできる。
-H ldapi:///
だと、ローカルサーバに対して操作。
$ ldapadd -Y EXTERNAL -H ldapi:/// -f /path/tofile.ldif
のように実行できる。
ldapサーバー(全体)の管理者のパスワードを変更する
{SSHA}abcdefgabcdefgabcdefg
は slappasswd コマンドで用意しておく。
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}abcdefgabcdefgabcdefgabcdefgabcdefg
ベースDNを変更する
configで確認した {2}hdb に設定する場合。
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=hogehoge,dc=or,dc=jp
データベース管理者のDNを変更する
`cn=Manager,dc=hogehoge,dc=or,dc=jp'にする場合。
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=hogehoge,dc=or,dc=jp
データベース管理者のパスワードを変更する
{SSHA}abcdefgabcdefgabcdefg
は slappasswd コマンドで用意しておく。
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}abcdefgabcdefgabcdefg
データベースの管理
これは、データベース管理者の権限で実行する必要があるので、-D "cn=Manager,dc=hogehogee,dc=or,dc=jp" -W
をつけてldapaddを実行する。
(ダブルクオートの中は、データベース管理者のDN)
# ldapadd -H ldapi:/// -D "cn=Manager,dc=hogehoge,dc=or,dc=jp" -W -f /path/to/hogehoge.ldif
トップ組織を作成する
dn: dc=hogehoge,dc=or,dc=jp
objectClass: dcObject
objectClass: organization
dc: hogehoge
o: 組織名
ユニットを作成する
peopleというユニットを作成する場合。
dn: ou=people,dc=hogehoge,dc=or,dc=jp
objectClass: organizationalUnit
ou: people
スキーマの管理
使えるスキーマの一覧
dnを指定してdnのみ表示させると見やすい。
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn
(snip)
dn: cn=schema,cn=config
dn: cn={0}core,cn=schema,cn=config
スキーマファイルからldifへの変換
参考 : OpenLDAP Server 日本語訳
管理のためには、/etc/openldap/schema/
ディレクトリの中に、.schemaと.ldifを保存しておくのが良いと思われる。
スキーマの追加
ldapadd -H ldapi:/// -Y EXTERNAL -f /etc/openldap/schema/SOMETYPE.ldif
.schemaから.ldifに変換する時に必要だったldifファイルも追加しておくこと。
(例えば、inetOrgPersonを継承したクラスだったら、あらかじめinetOrgPersonスキーマを追加しておく。inetOrgPersonスキーマを追加するには、あらかじめcosineスキーマを追加しておく。)
ユーザーデータの管理
ldifファイルを使ってユーザーの追加
データベース管理者の権限で実行する
# ldapadd -H ldapi:/// -D "cn=Manager,dc=hogehoge,dc=or,dc=jp" -W -f /path/to/file.ldif
CentOS 7.6 にインストールする方法
# yum install openldap openldap-servers openldap-clients
# systemctl start slapd
# systemctl enable slapd