#用語と概念#
・識別名
ディレクトリツリー内のエントリを識別するには、識別名を使う。
ツリー構造の末尾から「,」でつないだものです。
uid=linucuser,ou=education,dc=linuc,dc=jp
・LDIF
ディレクトリ内の情報は、LDIFというテキストファイルで表現する。1行目は識別名です。
dn: uid=linucuser,ou=education,dc=linuc,dc=jp
uid: linucuser
objectclass: posixAccount
cn: linucuser
uidNumber: 700
gidNumber: 700
homeDirectory: /home/linucuser
loginShell: /bin/bash
・オブジェクトクラス
エントリが表す具体的ものの種類や、エントリで利用できる属性を定義したもので、何らかのオブジェクトクラスに属する。
(例)
組織:organization
ユーザーアカウント:account
国:country
・スキーマ
オブジェクトクラスや属性の定義。
LDAPでは様々なスキーマが予め用意されているので、一般的な用途では個別に定義しなくても良い。
/etc/openldap/schema
に格納される。
スキーマファイル | 説明 |
---|---|
core.schema | OpenLDAPで必須のスキーマ |
cosine.schema | ディレクトリサービスのX.500規格で規定された属性が定義されたスキーマ |
inetorgperson.schema | アドレス帳など個人情報を扱うためのスキーマ |
nis.schema | UNIX/Linuxのユーザーやグループ情報を扱うためのスキーマ |
・オブジェクト識別子
オブジェクトラスや属性には、オブジェクト識別子が割り当てられる。
OIDは重複しないようにIANAで管理されている。
・ホワイトページ
個人別電話帳のことです。
作成するには、inetorgperson.schema で定義されている inetOrgPerson を利用するのが一般的です。
属性 | 説明 |
---|---|
cn | 一般名(common name) |
sn | 苗字 |
メールアドレス | |
o | 組織名 |
ou | 組織単位名 |
streetAddress | 住所 |
postalCode | 郵便番号 |
telephoneNumber | 電話番号 |
description | 説明 |
#OpenLDAPの設定#
- デーモンは、slapd です。
- かつては、/etc/openldap/ldap.conf を利用、現在は、/etc/openldap/slapd.d/.ldif 以下に設定が格納され、OpenLDAPサーバーユーティリティコマンドを使って、動的に変更できるようになっている。
OpenLDAPサーバーユーティリティコマンド | 説明 |
---|---|
slapadd | エントリを追加する |
slapcat | 内容をLDIF形式で出力する |
slapindex | インデックスを再構築する |
slappasswd | 暗号化されたパスワードを生成する |
slaptest | LDAPサーバーの設定をチェックする |
slappasswd でOpenLDAPサーバー管理者パスワードを生成してLDAPデータベースに登録します。
# slappasswd
生成されたパスワードを含むLDIFエントリを作成します。
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: ************
このLDIFエントリを ldapadd でLDAPデータベースに登録します。
# ldapadd -Y EXTERNAL -H ldapi:/// -f setrootpass.ldif
ベースDNを設定します。管理するLDAPエントリの最上位となるのが、ベースDNです。
ここでもLDIFファイルを作成します。設定を変更することになるので、ldapmodify を使います。
dn: cn=ToModify,dc=example,dc=com
changetype: Modify
........
# ldapmodify -x -D cn=config -W -f modify_basedn.ldif
上記のLDAPデータベース管理者パスワードを設定します。(先のサーバー管理者とは別です。)
slappasswd を実行し、そのパスワードを記載したLDIFファイルを作成します。
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: ************
管理者パスワードを登録します。
# ldapadd -Y EXTERNAL -H ldapi:/// -f setMangerpass.ldif
LDAPデータベースのスキーマを拡張します。後にユーザーを登録するのに必要になります。
# 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
テストとして、Linuxユーザーアカウントを登録してみます。次のようなLDIFファイルを作成します。
dn: dc=thinkit,dc=co,dc=jp
objectClass: dcObject
dc: linuc
............
LDAPデータに登録します。
# ldapadd -x -D "cn=MAnger,d =linuc,dc=jp" -W -f test.ldif
slapcat でLDAPデータベースの内容がLDIF形式で出力されます。
# slapcat
slapadd で、LDIFデータをLDAPデータベースに登録できます。
つまり、slapcatを使って、LDAPデータベースのバックアップをとり、slapaddでリストアできます。
# slapcat > ldapdb.ldif
# slapadd -l ldapdb.ldif
データベースをリストアした後は、slapindex を実行してデータベースのインデックスを再構築できます。
# slapindex
#LDAPのアクセス制御#
olcAccess: to アクセス制御対象 by アクセス許可対象 アクセスレベル
アクセス制御対象 | 説明 |
---|---|
* | すべてのエントリ |
attrs=属性 | 指定した属性のみ |
dn=DN | 指定したdnのみ |
アクセス許可対象 | 説明 |
---|---|
* | すべてのユーザー |
anonymous | 認証前のユーザー |
users | 認証されたユーザー |
self | 接続中の認証済みユーザー自身 |
dn[.範囲]=DN | 指定したDNのユーザー |
アクセス許可対象の範囲 | 説明 |
---|---|
exact | 完全一致 |
base | ベースDNで指定されたエントリのみ |
one | ベースDNで指定されたエントリとその直下 |
sub | ベースDNで指定されたエントリとその下にある全エントリ |
アクセスレベル | 説明 |
---|---|
manage | すべて可能 |
write | 属性値を変更できる |
read | 検索結果を参照できる |
search | 検索できる |
compare | 比較できる |
auth | 認証を受けることができる |
disclose | エラー情報が出る |
none | アクセスできない |
アクセス制御がされていない場合は、すべてのユーザーがすべてのエントリを読み込むことができる。
ただし、エントリの更新はrootdnだけが可能。
##LDAPクライアント##
LDAPクライアント | 説明 |
---|---|
ldapadd | エントリを追加する |
ldapsearch | エントリを検索する |
ldapdelete | エントリを削除する |
ldapmodify | エントリを変更する |
ldappasswd | パスワードを変更する |
LDAPクライアントのオプション | 説明 |
---|---|
-h | LDAPサーバを指定する |
-H | LDAPサーバをURIで指定する |
-x | SASLを使わずに簡易認証を用いる |
-p | LDAPのポートを指定する。389 |
-D | LDAPサーバでの認証に使用するバインドDNを指定する |
-W | 認証時のパスワードを対話的に入力する |
-w | 認証に使用するパスワード指定する |
-f | データファイル指定する |
-b | LDAPサーバの検索をするベースDNを指定する |
ldapsearchのオプション | 説明 |
---|---|
-b | 検索を開始するベースDNを指定する |
-L | 検索結果をLDIFv1形式で表示する |
-LL | 検索結果をコメントなしの形式で表示する |
-LLL | 検索結果をコメントとLDAPバージョン表示なしで表示する |
ldapmodifyの属性 | 説明 |
---|---|
add | 追加 |
replace | 修正 |
delete | 削除 |
ldappasswdのオプション | 説明 |
---|---|
-b | 検索を開始するベースDNを指定する |
-s | 新しいパスワードを指定する |
-S | 新しいパスワードを対話的に入力する |