LDAP passwd

某りなけん!ではLDAPでアカウント管理されていますが、これ自宅でもやってみたい。
というわけでやってみました。このページは備忘録です。

どうでもいいけど、"ldap 入門"でぐぐっても本くらいしかでないのね。あとは使えないページ。しょんぼり。

ていうか、ここに書かなくてもTips/LDAPに書けばよかったね。

環境

うちのサーバーは古くて、VineLinux3.2で動いています。

ここではeth0が192.168.1.123と仮定します。

おいしいLDAPツール

ちょっと道それるけど、LDAPを構築するにはやはりツールがあるとすごく助かるもの。
使ったものを紹介するね。

LDAP Browser/Editor

定番ツール。Java。
フリーで入手できるはずだったんだけど今ググったらなかなか出ない。手元にあるのは2.8.2。Aboutには

LDAP Admin

LDAP Browser/EditorはJavaな点はすばらしいんだけど、たとえばエントリ追加に失敗してもダイアログ閉じちゃって、一から入力しなければいけなかったり、Templateも少なすぎて(posixAccountとかも無いし!)ちょっと常用するにはきついので、ググってみたらこんなのがありました。

やってみる

まず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"と言われてできない><)

あとで判明

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]
お名前:
  • HTML
  • PDF
RSS2.0 RSS1.0 Atom1.0