|
ユーザーごとにディレクトリエントリを作成していきます。hogeユーザーの/etc/passwdエントリをLDIFで記述すると次の様になります。
hogeユーザーの/etc/passwdファイルの記述
| hoge:x:3001:3001:LDAPuser:/home/hoge:/bin/tcsh |
hogeユーザーのLDIFの記述
dn: uid=hoge,ou=people,dc=example,dc=jp
uid: hoge
objectclass: posixAccount
uidNumber: 3001
gidNumber: 3001
gecos: LDAPuser
homeDirectory: /home/hoge
loginShell: /bin/tcsh
cn: hoge
|
識別名を構成する相対識別にどの属性をつかってもかまいませんが、識別名が一意になるような属性を使う必要があります。ここではユーザー名が一意なものであり、データベースで言う主キーになるわけです。ですからユーザー名ではなくユーザーID(uidNumber)であってもかまいません。/etc/passwdと照らし合わせると、ほぼ1対1で対応していますが、LDIFにはobjectclassやcnの様な特別なディレクトリエントリが付属しています。objectclassは前章で説明したとうり、このディレクトリエントリがどの様な情報を格納しているのか定義するために用いられます。この定義によりcn属性(一般名)を持たなければなりません。
</etc/shadowをLDIFで表記する>
続いて暗号化ファイルをLDIFで記述します。
hogeユーザーの/etc/shadowファイルの記述
| hoge:**************: [変更日時]
: [変更不能日数] : [変更要求日数] : [期限満了警告日数] ::: |
shadowファイルを扱う場合はobjectclassにshadowAccountを使って下さい。shadowAccountもnis.schemaに定義されています。
dn: uid=hoge,ou=people,dc=example,dc=jp
uid: hoge
objectclass: posixAccount
objectclass: shadowAccount
uidNumber: 3001
gidNumber: 3001
gecos: LDAPuser
homeDirectory: /home/hoge
loginShell: /bin/tcsh
cn: hoge
userPassword: {CRYPT}**************
shadowLastChange: [変更日時]
shadowMin: [変更不能日数]
shadowMax: [変更要求日数]
shadowWarning: [期限満了警告日数]
|
userPassword属性を確認してくだい。{CRYPT}と付いています。これはどの方法で暗号化されているのかを示すものです。他に{MD5}
{SMD5} {SSHA}などがあります。先頭に{}で暗号化方式を指定しないと平文と解釈されて正しく認証されませんので気をつけてください。また平文の文字列を暗号化するツールもOpenLDAPには実装されていますので、必要ならばそれを使ってuserPasswordの値にセットしてください。
| /usr/local/sbin/slappasswd
-h '{CRYPT}' -s [平文] -c "%s" |
<アカウントの登録>
インストール直後では、schemaとしてcore.schemaしか組み込まれていませんので、そのままではposixAccountなどが利用できません。まずはslapd.confでnis.schemaを組み込みます。またnis.schemaはcosine.schemaで定義している属性も参照するのでcosine.schemaも組み込む必要があります。さらにLDAPでのパスワード変更でもCRYPT暗号方式を利用できるようにしておきます。
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/nis.schema
password-hash {CRYPT} |
slapd.confの編集が終わればslapdを再起動してください。準備が整えばアカウントの登録です。
「dc=syns,dc=net」はすでに登録していますが「ou=people,dc=syns,dc=net」はまだ登録していませんので、まずはこれから登録します。
| ldapadd -x -D 'cn=Manager,dc=syns,dc,net'
-W -f people.ldif |
people.ldifは次のようなファイルになります。
dn: ou=People,dc=syns,dc=net
ou: people
objectclass: organizationalUnit
|
このように「ou=People,dc=syns,dc=net」を追加してから「uid=hoge,ou=People,dc=syns,dc=net」を登録します。
| ldapadd -x -D 'cn=Manager,dc=syns,dc,net'
-W -f hoge.ldif |
登録ができたが確認する場合はldapserchコマンドを使ってください。
| ldapserch -x -b 'dc=syns,dc=net'
uid=hoge |
LDAPにデータを格納すれば、セキュリティー面にも気をくばらなければなりません。slapd.confにはアクセス制限をする機能がありますので次を参考に編集してください。
acess to *
by self write
by * read |
上の記述では自分は書き込み可能、他の人でも読み込み可能(書き込み不可)になります。
acess to *
by dn="cn=Manager,dc=syns,dc=net" write
by self write
by * read |
上の記述ではcn=Manager,dc=syns,dc=netが特権的に書き込めるようになります。
access to attibute=userPasswork
by self write
by dn="cn=Manager,dc=syns,dc=net" write
by anonymous auth
by * none
acess to *
by dn="cn=Manager,dc=syns,dc=net" write
by self write
by * read |
一般にuserPassword属性はそのユーザーだけが読み下記でき他の人には何もできない様にしておくのが望ましいでしょう。ですから基本的なアクセス制御は上の様な記述で問題ありません。
(注意)
LDAPの場合、書き込み権限が一番強くこの権限があれば読み込み権限も持つ事になります。UNIXのパーミッションと違い書き込みはできて読み込めないという設定はできません。
データを登録すれば実際にnssを使ってユーザー情報を参照できるか確認してみてください。(テンプレートは/etc/nsswitch.ldapです。)
|