Directory Services

LDAP


LDAPサーバとのお付き合いの歴史
一番最初は、Solaris 2.6のServer Extentionに入っていた、Sun Directory Serverだったと思う... これ、NISとLDAPを統合することができる画期的なやつだったけど、すげー使いにくかった。
その後、Netscape Cirtificate Serverの1.xから3.x(CMS: Cirtificate Management Systemだっだけかな?)にバージョンアップしたときに、Netscape Directory Serverをはじめて使って、そのあとは、Solaris 8 SPARCにくっついていたiPlanet Directory Server、Solaris 9のSunONE(iPlanet) Directory Serverへと乗り換えているのでありました。
FreeのLDAPサーバーは使ったことないっす。
あ、くされActive DirectoryもLDAPサーバーだった...
ちぇっくちぇっくちぇっく!
Solaris 9の良いところは、Sun ONE(iPlanet) Directory Server 5.1がくっついてくることでしょう。Solaris 8 x86はiPlanet Directory Serverが動かないのがイケてなかった。
でだ、インストールされるのはいいが、そのままでは動かないみたい。動かす前に
/usr/iplanet/ds5/bin/slapd/server/idsktune
を実行しましょう。
のーまるのまんまだと、/etc/init.d/inetinitの最後に、なんか書けとか言ってきます。まあ。お好きなように。
もち、メモリーが1024MB未満しかねぇだと、ぬかされても、「ざーけんな」とか言って、逆上しないように。
セットアップ
とりあえず
/usr/sbin/directoryserver setup
としましょう。以下、入力を求められる部分の、レスポンス例です。
Would you like to continue with configuration? [Yes]:←そのままリターン
Do you want to continue [No]:←yes
Select the component you want to configure [1]:←そのままリターン
Choose a configuration type [2]:←そのままリターン
Specify the components you wish to configure [All]:←そのままリターン
Specify the components you wish to configure [1, 2]:←そのままリターン
Specify the components you wish to configure [1, 2]:←そのままリターン
Computer name [FQDNなホスト名]:←そのままリターン
System User [nobody]:←そのままリターン
System Group [nobody]:←そのままリターン
Do you want to register this software with an existing
iPlanet configuration directory server? [No]:←そのままリターン
Do you want to use another directory to store your data? [No]:←そのままリターン
Directory server network port [389]:←そのままリターン
Directory server identifier [識別子(大抵はFQDNのドメイン名部分を除いたもの)]:←そのままリターン
administrator ID [admin]:←そのままリターン
Password:上記IDのパスワード(非表示)
Password (again):上記IDのパスワード(非表示)
Suffix [dc=ドメイン名の一部, dc=ドメイン名の一部]:←そのままリターン
Directory Manager DN [cn=Directory Manager]:←そのままリターン
Password:上記IDのパスワード(非表示)
Password (again):上記IDのパスワード(非表示)
Administration Domain [ドメイン名]:←そのままリターン
Administration port [10607]:←お好きなポート番号に変更
Run Administration Server as [root]:←そのままリターン
Press Return to continue...←そのままリターン
これで
Go to /usr/sbin and type directoryserver startconsole to begin
managing your servers.
って出てきたら、おしまい。
idsconfigの実行
さっそくサーバーの構成ってことで
/usr/lib/ldap/idsconfig
を起動します。以下、サンプルの設定例。
Do you wish to continue with server setup (y/n/h)? [n]←yにきまってるやんけ
Enter the iPlanet Directory Server's (iDS) hostname to setup:←ホスト名を入力
Enter the port number for iDS (h=help): [389]←そのままリターン
Enter the directory manager DN: [cn=Directory Manager]←そのままリターン
Enter passwd for cn=Directory Manager :←Directory Managerのパスワード(非表示)
Enter the domainname to be served (h=help): [ドメイン名]←そのままリターン
Enter LDAP Base DN (h=help): [dc=ドメイン名の一部,dc=ドメイン名の一部]←そのままリターン
Enter the profile name (h=help): [default]←そのままリターン
Default server list (h=help): [LDAPサーバーのIPアドレス]←そのままリターン
Preferred server list (h=help):←最初のサーバーなら、そのままリターン
Choose desired search scope (one, sub, h=help): [one]←sub
Choose Credential level [h=help]: [1]←2をチョイス
Choose Authentication Method (h=help): [1]←2をチョイス(simple)
Do you want to add another Authentication Method?←n(追加しない)
Do you want the clients to follow referrals (y/n/h)? [n]←y
Do you want to modify the server timelimit value (y/n/h)? [n]←y
Enter the time limit for iDS (current=3600): [-1]←そのままリターン
Do you want to modify the server sizelimit value (y/n/h)? [n]←y
Enter the size limit for iDS (current=2000): [-1]←そのままリターン
Do you want to store passwords in "crypt" format (y/n/h)? [n]←y
Do you want to setup a Service Authentication Methods (y/n/h)? [n]←そのままリターン
Client search time limit in seconds (h=help): [30]←そのままリターン
Profile Time To Live in seconds (h=help): [43200]←そのままリターン
Bind time limit in seconds (h=help): [10]←2
Do you wish to setup Service Search Descriptors (y/n/h)? [n]←そのままリターン
Enter config value to change: (1-19 0=commit changes) [0]←そのままリターン
Enter DN for proxy agent: [cn=proxyagent,ou=profile,dc=ドメイン名の一部,dc=ドメイン名の一部]←そのままリターン
Enter passwd for proxyagent:パスワード(非表示)
Re-enter passwd:パスワード(非表示)
WARNING: About to start committing changes. (y=continue, n=EXIT)←y
コーンな感じで、ふつうはエラーもでずに、終了するはずです。
エラーがでても対処はご自分で(^^;
最後にメッセージに出てくるVLV indexの作成を
/usr/sbin/directoryserver stop
したうえで
directoryserver -s <server-instance> vlvindex -n userRoot -T ドメイン名.getgrent
directoryserver -s <server-instance> vlvindex -n userRoot -T ドメイン名.gethostent
directoryserver -s <server-instance> vlvindex -n userRoot -T ドメイン名.getnetent
directoryserver -s <server-instance> vlvindex -n userRoot -T ドメイン名.getpwent
directoryserver -s <server-instance> vlvindex -n userRoot -T ドメイン名.getrpcent
directoryserver -s <server-instance> vlvindex -n userRoot -T ドメイン名.getspent
としておきましょう。<server-instance>は、最初に指定した「識別子」です。
なお、simple以外の認証方式を使いたいところですが、Solaris 8との共存とかいろいろ考えると、めんどくさいので、simpleで。
サーバーの再起動
ということで、作るなり、置くなりしたら、サーバーを再起動します。コマンドラインで
/usr/sbin/directoryserver start
とします。
/var/ds5/slapd-識別子/logs/errorsにエラーならエラーの記録が残るので、エラーがでた場合は、自分で対処してください。私は知りませんです。
管理コンソールの起動
なにも考えずに
/usr/sbin/directoryserver startconsole
しましょう。Java Applicationなので、非力なマシンだとちょっちつらいっス。
あ、自前でFrame bufferを持っていないマシンの場合、ぜーんぶコマンドラインで作業するか、他のマシンにXを飛ばしてね。表示する側でxhost +するのと、飛ばす側でDISPLAY環境変数をセットするのを忘れないように。
でもって、起動すると、
こんなんが、でます。
すかさず、administrator IDとして登録した名前を「ユーザID」にいれ、ついでにパスワードを入れて、「OK」ボタンを押すと、ふつーは、ログインできて、
こんなんウィンドウがでます。
Directory Managerとしてのログイン
でだ、このままだと、adminの権限での作業だけど、この先Directory Managerとして作業必要があります。
そんなわけで、Directory Managerとしてログインし直すには...
上記のウィンドウの「開く」ボタンを押すと、
こんなウィンドウが表示されて、「Directory Serverに新しいユーザとしてログイン」の左のボタンを押すと、今度は
こんなウィンドウが出てくるので、「識別名」にDirectory Manager DNであるcn=Directory Managerを設定して、パスワードを入力します。「OK」ボタンを押して、エラーにならなければ、「ディレクトリ」タブを選択して、エントリーの編集などを行うことができるようになります。
ちなみに、最初にコンソールを立ち上げたときに、この識別名を指定してしまえば、最初っからDirectory Managerになります。
パスワードポリシーの変更
パスワード長は最低でも8文字に設定しておきましょう。なお、パスワードの暗号化は、CRYPTのままにしておく必要があります。
最後に「保存」を押しましょう。
アカウントロックアウトの変更
ロックアウトをきちんと設定しておきましょう。
最後に「保存」ボタンをおしませう。
proxyagentのパスワードタイムアウトを設定
デフォルトでは、アカウントに対するパスワードの設定期間は、無期限になっていますが、これを変更したとたんに、どのアカウントに対しても、その制限期間が適用されます。
でもって、proxyagentのパスワードは、期限が切れたが最後、だれもアクセスできなくなって、困ってしまうので、以下のように、オブジェクトを追加して、現状32-bit intで表現できる、ちょっと先の未来(この日が到達するまでに、システム的な問題は解決されるんでしょう、たぶん)を設定しておきます。
まずは、「ディレクトリ」タブから、proxyagentをみつけて、そのプロファイルを表示させます。
表示させたら、「属性の追加」ボタンを押して
passwordexpirationtime属性を追加して
値として20380119031407Zを設定します。
最後に「OK」ボタンを押して、おしまい。
LDAP Clientの設定
Solaris 9(サーバ/クライアント)
おもむろに
ldapclient init -a proxyDn=cn=proxyagent,ou=profile,dc=以下ドメイン名に依存 -a domainname=ドメイン名 -a profilename=default -a proxypassword=proxyagentのパスワード LDAPサーバのIPアドレス
と打ち込んで
System successfully configured
って出たら、めでたしめでたし... でもないか。
Solaris 8(クライアント)
こっちの場合は
ldapclient -D cn=proxyagent,ou=profile,dc=以下ドメイン名に依存 -d ドメイン名 -P default -w proxyagentのパスワード LDAPサーバのIPアドレス
と打ち込んで
System successfully configured
って出たら、おしまい。
/etc/nsswitch.confなど、おもむろに書き換えられてしまうので、自分の好きなように、書き直しましょう。
エントリーの追加と削除
ldapaddentでほいさっさ
すでに沢山あるであろう、NISで管理していたデータ(あるいはローカルで管理していたデータ)は、 ldapaddentを使って、一気にマップを変換してしまいましょう。
rootとかマシンlocalで設定すべきものが削除されたmap(すなわち共通で使うもののみ)を用意します。それを
ldapaddent -D "cn=Directory Manager" -w DirectoryManagerのパスワード -f ./passwd passwd
ldapaddent -D "cn=Directory Manager" -w DirectoryManagerのパスワード -f ./shadow shadow
ldapaddent -D "cn=Directory Manager" -w DirectoryManagerのパスワード -f ./group group
ldapaddent -D "cn=Directory Manager" -w DirectoryManagerのパスワード -f ./hosts hosts
ldapaddent -D "cn=Directory Manager" -w DirectoryManagerのパスワード -f ./netgroup netgroup
ldapaddent -D "cn=Directory Manager" -w DirectoryManagerのパスワード -f ./services services
として登録します。
passwd→shadowは順番どおりに取り込んだほうが、DBの効率がよいそーっす。
なお、コメントはdescription attributeとしてはとりこまれません。
ついでに、mail gatewayを複数台立てているときは、aliasesを取り込んで、replication機能を利用すると、aliasesの同期とか苦労せずに済みます。
エントリーの追加
いくらGUIで出来ると言っても、LDAPの習熟していないと、間違った設定をしてしまいがちです。
なので、追加したいエントリーだけを、今までと同じフォーマットで記述して、ldapaddentで追加しましょう。
エントリーの削除
削除はGUIからえらんで、Ctrl-Dとか右クリックで削除を選ぶのが確実です。
エントリーの修正
passwd/shadow関連
Peopleのエントリを選ぶと、登録済みのエントリーが表示されるので、変更したいものを選んで、右クリックで「詳細プロパティー」を選択します。
プロパティーが表示されたら、好きなところを直します。
とは言っても、「gecos」、「homedirectory」、「loginshell」、「gidnumber」、「パスワード」ぐらいしか、変更することはないでしょう。
ちなみに、「フルネーム(fullname)」属性は何者だかしりません。とりあえず「uid」と同じものが入るみたい。
group
groupのエントリを選ぶと、登録済みのエントリーが表示されるので、変更したいものを選んで、右クリックで「詳細プロパティー」を選択します。
プロパティーが表示されたら、好きなところを直します。
とは言っても、「gidnumber」、「memberuid」ぐらいしか、変更することはないでしょう。
見てのとおり、2ndry groupに書き連ねるuidは、すべて「memberuid」に追加します。追加するには、このフィールドを選んで、「値の追加」を押します。逆に削除する場合は、消したいフィールドを選んで、「値の削除」を押します。
hosts
hostsのエントリを選ぶと、登録済みのエントリーが表示されるので、変更したいものを選んで、右クリックで「詳細プロパティー」を選択します。
でもって、プロパティが表示されたら、「フルネーム」や「iphostnumber」を変更可能。なお、ホスト名のエイリアスを追加したい場合は、「値の追加」を押し、逆に削除したければ、「値の削除」を押せばよし。
コメントを追加したい場合は、「属性の追加」を押します。
descriptionを選択し、「OK」を押すとフィールドが追加されるので、説明を入れて「OK」を押せば、コメントの追加完了。
netgroup
NFSとかで、お手軽にmount制限をかけたいときに便利なnetgroupも、もれなくサポートされていて、netgroupのエントリを選ぶと、登録済みのエントリーが表示されるので、変更したいものを選んで、右クリックで「詳細プロパティー」を選択します。
プロパティーが表示されたら、好きなところを直します。
とは言っても、「gidnumber」、「nisnetgrouptriple」ぐらいしか、変更することはないでしょう。「nisnetgrouptriple」は、NISの表記同様、括弧の中に、カンマで区切って、ホスト名、ユーザー名、ドメイン名、を書き並べます。
NISの場合は、ドメイン名=NISドメイン名ですが、LDAPになっちゃった場合、何を意味するんだか、いまいちよくわかりませんが、ldapclientコマンドで指定するLDAPのドメイン名と一緒にしておくとよいんじゃないかと思いますです。はい。
services
ほとんどmapする必要性を感じませんが、念のため。
servicesのエントリを選ぶと、登録済みのエントリーが表示されるので、変更したいものを選んで、右クリックで「詳細プロパティー」を選択します。
プロパティーが表示されたら、好きなところを直します。
とは言っても、「ipserviceport」、「ipserviceprotocol」ぐらいしか、変更することはないでしょう。なお、エイリアスは登録されないようです。
また、servicesもコメントを追加しておいたほうがよいと思うので、hosts同様、description属性を追加しておくことをお勧めします。
すべての初期設定がおわったら...
/etc/nsswitch.confの設定変更
LDAPを参照するエントリを書き換えましょう。ただし、ldapを参照するのは、順番的に一番最後をお勧めします。
変更したら忘れずに!
エントリを追加したり、変更したりしたら、必ずバックアップを取りましょう。とは言っても、LDIFに落とすだけ。
でも、間違って、変なことをしてしまったときには、これを読み込みなおすだけで、元に戻せます。
気にくわないときは...
/usr/sbin/directoryserver uninstall
で、きれーにしてから、やり直しましょう。
参考文献
以下の文献が役に立ちます。
また、「SolarisによるLDAP実践ガイド」のscriptについては、SUN BLUEPRINTS PUBLICATIONSから取得することが可能です。(Solaris 9じゃ使うことないけどさ)
おまけ
passwdの書式
username:x:UID:GID:GECOS:homedirectory:shell
shadowの書式
username:password:::::
groupの書式
groupname:password:GID:username,username...
hostsの書式
IPaddress hostname alias alias ...
netgroupの書式
groupname (hostname, username, domainname) (hostname, username, domainname) ...
aliasesの書式
name: address, address, ...

Copyright (C) 2003, のらねこひらまつ, All rights reserved.