LDAP passwd†
某りなけん!ではLDAPでアカウント管理されていますが、これ自宅でもやってみたい。
というわけでやってみました。このページは備忘録です。
どうでもいいけど、"ldap 入門"でぐぐっても本くらいしかでないのね。あとは使えないページ。しょんぼり。
ていうか、ここに書かなくてもTips/LDAPに書けばよかったね。
環境†
うちのサーバーは古くて、VineLinux3.2で動いています。
ここではeth0が192.168.1.123と仮定します。
おいしいLDAPツール†
ちょっと道それるけど、LDAPを構築するにはやはりツールがあるとすごく助かるもの。
使ったものを紹介するね。
LDAP Browser/Editor†
定番ツール。Java。
フリーで入手できるはずだったんだけど今ググったらなかなか出ない。手元にあるのは2.8.2。Aboutには
- http://www.iit.edu/~gawojar/ldap
- http://www.mcs.anl.gov/~gawor/ldap
と書いてあるけど、どちらも404。"LDAP browser editor jarek gawor"で検索するとnovellのページが出てきた。
- http://www.novell.com/communities/node/8652/gawors-excellent-ldap-browsereditor-v282
ここからダウンロードできそう。
LDAP Admin†
LDAP Browser/EditorはJavaな点はすばらしいんだけど、たとえばエントリ追加に失敗してもダイアログ閉じちゃって、一から入力しなければいけなかったり、Templateも少なすぎて(posixAccountとかも無いし!)ちょっと常用するにはきついので、ググってみたらこんなのがありました。
- http://ldapadmin.sourceforge.net/index.html
たぶんDelphiで、Windows専用だけど、これは使いやすいと思う。
やってみる†
まずLDAPについてさっぱりだったのでぐぐる。
http://www.linux.or.jp/JF/JFdocs/LDAP-HOWTO.html
仕組みについてはなんとなくわかったが、LDAP環境を作る向けではない。
あとあと
http://funini.com/kei/unix/ldap.shtml
というわかりやすいページがあったんだけど、これを見つけるのはかなり終盤でした。
やったことといえば…
LDAPを理解する†
- サーバー・クライアント。
- オブジェクトがツリー状になっている。
- objectClassなるものでオブジェクトの形というかフィールドが決まる。
- たくさんobjectClassを割り当てられるらしい。
- objectClassによって必須項目(MUST)と任意項目(MAY)が決まる。
(後の経験でMUSTがないと登録に失敗することがわかった。)
- ツリーの作り方は特に決まっていない?
(後にたとえばユーザーをuid=hogeuser,ou=People,o=hogehoge.comで作ってますが、
別にuid=hogeuser,o=usertreeでもいいんじゃないでしょうか。未検証。) - あとobjectClassはAUXILIARYとSTRUCTURAL(とABSTRACT?)と種類があるらしい。
- (しかもSTRUCTURALが一個は指定されてないとobject作るのに失敗するらしい。
"no structural object class provided"といわれる。)
- (さらにしかもSTRUCTURALは競合しあう関係らしい。inetOrgPersonにposixGroup追加しようとしたら怒られた。
"invalid structural object class chain (inetOrgPerson/posixGroup)")
- (あとでinetOrgPerson/posixAccountからposixGroup/posixAccountに変えようと思っても
"structural object class modification from 'inetOrgPerson' to 'posixGroup' not allowed"と言われてできない><)
あとで判明
- 問い合わせには"EQUAL"(完全一致) "ORDERING"(大小比較) "SUBSTR"(部分一致)というのがあるらしい。
- schemaの書き方?読み方?とか、上のことに関しては
http://www.uegaito.com/qualification/20090115-lpic.html
が詳しい。
openldap関係についても理解する†
slap系とldap系コマンド slap系はサーバー側。ファイルを直に見る/変えるらしい。 ldap系はクライアント側。ネットワーク経由でつつくらしい。
まずパッケージ入れる†
apt-get install openldap-clients openldap-servers nss_ldap auth_ldap(後でapacheでやりたい) (nscdもdependで入る)(openldap-clientsは既に入ってた)
/etc/openldap/slapd.confを書き換える†
suffix "o=hogehoge.com" rootdn "cn=Manager,o=hogehoge.com" rootpw hogehogepassword
ここに書いたrootdnは、データベースに存在していなくてもこのDNでつなぐことが出来る。参考ページのどれかに「これで卵と鳥問題を解決する」と書いてあった。しっくりくる表現。
ちなみにrootpwを消すとデータベースに存在するエントリのパスワードで認証できるらしい。未検証。
とりあえずslapdを上げる†
service ldap start
外からLDAP Browserをつかって接続する†
BaseDN o=hogehoge.com ユーザー(UserDN)cn=Manager,o=hogehoge.com、パスワードhogehogepassword。 つなげたけど、List failedみたいな感じになる。
エントリを追加する†
この状態ではそもそも何もないため、listに失敗している。
add entryでo=hogehoge.comをつくる†
Edit->Add Entry->Organization dnをo=hogehoge.comに変える。 いっぱい入力項目があるけど、そのままApplyを押す
とりあえずou=Peopleでもつくってみる†
o=hogehoge.comを選択して、Edit->Add Entry->organizationUnit dnのou=neworganizationUnitをou=Peopleに変える。(dnがou=People, o=hogehoge.comになる。) Applyする
さらにとりあえずuid=hogeuserを作ってみる。†
ou=Peopleを選択してEdit->Add Entry->person (posixAccountがねえ!)
dnをcn=newperson -> uid=hogeuserにする
objectclassをperson -> posixAccountにする
objectclassのどれかのラベルを右クリック、add valueして欄を増やし、posixGroupと入れる
userPasswordはてきとうに。
(slappasswdつかって)
[root@hoge root]# slappasswd -h {CRYPT}
New password: (hoge)
Re-enter new password: (hoge)
{CRYPT}ISIIYRQCHZh7E
[root@hoge root]#
(のように{CRYPT}で作って、それを入力するといい。libnss-ldapでそのままつかえる!らくちん!)
このままでは圧倒的にMUSTが足りなくてそのままapplyするとはじかれるので、欄を作りまくる。
Edit->Add Attribute
uid
uidNumber
gidNumber
homeDirectory
loginShell
を追加する。(ぜんぶStringで)
uidはhogeuser
uidNumberは700(てきとう)
gidNumberは700(てきとう)
homeDirectoryは/home/hoge(てきとう)
loginShellは/bin/bash(てきとう)
で、Apply!
うまくみれるかサーバー側でslapcatする†
ずらずらー
うまくみれるかldapsearchする†
今回はサーバーでやりました。
# ldapsearch -x -D "cn=manager,o=murachue.ddo.jp" -w hogehogepassword ldap_bind: Can't contact LDAP server (81) あうち!
気を取り直す
# ldapsearch -x -D "cn=manager,o=murachue.ddo.jp" -w hogehogepassword -h 192.168.1.123 ずらずらー
どうやらeth0のIPアドレスでないとだめらしい…なぜ?
slapdは、ちゃんと/etc/hosts.{allow,deny}を見ます。
/etc/hosts.deny ALL: ALL /etc/hosts.allow ALL: 192.168.1.0/255.255.255.0 ALL: 127.0.0.0/255.0.0.0 <----これを追加すればOK
/etc/nsswitch.confを書き換える。†
passwd: files ldap shadow: files ldap group: files ldap この3つをこんな感じに"ldap"を追加する。
/etc/ldap.confを書き換える。†
host 192.168.1.123 base o=hogehoge.com
rootで/home/hogeを作っておく。†
mkdir /home/hoge chown 700:700 /home/hoge
いよいよこの瞬間。†
# su hogeuser bash-2.05b$
ちなみにsshもできる†
(puttyからhogeuser@hoge) bash-2.05b$
できあがり†
出来た興奮冷めあらぬうちに、思い出しながら書いているので、ミスがあるかも。
やってみてダメなところがあったら、遠慮無くつっこんでね!!
PAMもごにょってみる†
認証関係は
# authconfig
で何とでもなることが判明。これ使えばnsswitch.confもldap.confもうまくやってくれる。
(ただしnss_base_*系は手で書き換えが必要っぽい)
一応MD5で保存してる†
$ su - hogeuser -bash-2.05b$ whoami hogeuser -bash-2.05b$ passwd Changing password for user mrac. Enter login(LDAP) password: (hoge) New password: (fugafuga) Re-enter new password: (fugafuga) LDAP password information changed for hogeuser passwd: all authentication tokens updated successfully. -bash-2.05b$
なんかうまくいってるっぽい。
ちなみに
-bash-2.05b$ passwd Enter login(LDAP) password: (hoge) passwd: Authentication information cannot be recovered
と言われてはじかれる場合は
http://ubuntuforums.org/showthread.php?t=156071
を参考に、/etc/pam.d/system-authを
password sufficient /lib/security/$ISA/pam_ldap.so <----use_authtokを消す
と変更するといけるかも。手元ではそれで解決できた。
でも...
# passwd hogeuser Changing password for user hogeuser. Enter login(LDAP) password: (^D)<----なぜか聞かれる、rootなのに! Password change aborted passwd: Authentication token manipulation error #
どうすりゃいいの(泣
ToDo†
なぜlocalhostではつながらないのか(ldapsearch)- /etc/hosts.{allow,deny}を見ている、そして127.0.0.1がallowされてなかったから。
{CRYPT}なpasswdだけでなく{MD5}とかも試してみる。(PAM-LDAP)- 一応authconfigでうまくできる。が、ちょっと難あり。
- apacheと連携(auth_ldap)
- mailmanと連携
- extend.pyにLDAPMembership0.4うんたらを組み合わせるほげほげ…? (未検証)
参考ページ†
上に出てきたリンクも書いてます。
http://www.linux.or.jp/JF/JFdocs/LDAP-HOWTO.html
http://park15.wakwak.com/~unixlife/practical/openldap-1.html
http://www.syns.net/15/index.html
http://www.linux.or.jp/JF/JFdocs/LDAP-Implementation-HOWTO/pamnss.html
http://funini.com/kei/unix/ldap.shtml
http://www.uegaito.com/qualification/20090115-lpic.html
http://ubuntuforums.org/showthread.php?t=156071
OIDがよくわからなくなったら
http://www.alvestrand.no/objectid/
OIDをたどれます。
http://www.alvestrand.no/objectid/top.html
つっこみ†
- USA -- hizcuv [2012-05-23 09:39:59.889]
- F4YDAB <a href="http://mvwztrdqukrv.com/">mvwztrdqukrv</a>, [url=http://dkpfzurisdrq.com/]dkpfzurisdrq[/url], [link=http://oyropbzijbzv.com/]oyropbzijbzv[/link], http://ydtdbvxedezx.com/ -- mdDMjOlgXzXMiorjU [2010-03-10 19:18:52.619]





