認証の一元管理という奴。サーバが沢山増えてきていちいち/etc/passwdとか/etc/shadowとかをペチペチ貼るのが面倒になってきた人向け。
で、migrationtoolsとかいうのを作ると一括でLDIFにしてくれる。debianの場合はaptで一発で入りますわ。
で、全部を全部LDAPにつっこまないといかんというわけでもなく、認証の順位を決めてヤってくれるの(LDAPでまず認証し、駄目なら/etc/passwdというか/etc/shadow)で、とりあえずUID=1000以上のものを抜いてみる。こんな感じでしょか。
grep :1[0-9][0-9][0-9] /etc/passwd
テスト用過ぎて2人しかいなかったんですが。とりあえずリダイレクトとかして保存しておく。
で、migrationtoolsを使う。このツールは何気に癖がありまくりで、該当ディレクトリまで動かないと使えないという…
/usr/share/migrationtools/migrate_passwd.pl Can't locate migrate_common.ph in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/share/migrationtools/migrate_passwd.pl line 41
/usr/share/migrationtools/までcdして使いましょう(debianの場合はこのディレクトリ)
$ cd /usr/share/migrationtools $ ./migrate_passwd.pl Usage: migrate_passwd.pl infile [outfile]
というわけでinfileには先程grepした奴を指定し、outfileにも適当に指定しておくと
# ./migrate_passwd.pl /root/user-list /root/user-list.ldif
出来上がったldifを覗いてみると、ou=People,dc=padl,dc=comとかになって都合がよろしくないので、このようにして実行しなおしてみよう。
# LDAP_BASEDN="dc=example,dc=com" ./migrate_passwd.pl /root/user-list /root/user-list.ldif
もちろん、ここでdc=example,dc=comなどはそれ相応の運用しているドメインに書き換える事
で、このldifを投入する。パスワードの値がおかしいかもしれないので修正しとこう。
とりあえずlibpam-ldapは必須。いれるときにいろいろ聞かれるのでそれ相応に答える事。まあしくじったら後で/etc/pam_ldap.confを修正すればええ。
例によっていろいろ聞かれますが。
今回はとりあえずpasswdとshadowしか弄ってないので、こんな具合でしょか
passwd: compat ldap group: compat shadow: compat ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
/var/log/auth.logを参照やで
(多分)libpam-ldapとlibnss-ldapをいれて、/etc/nsswitch.confを変更すればOKなハズ。。。
とりあえず動いたというのは動いたんだろうが、全然セキュアでない点。。 ちゃんとACLなど設定し、異なるユーザからLDAPを直接叩きこまれないかどうかとか そういうのもチェックしていかないといけない。
それから、/etc/groupもLDAPにつっこみたいならそれなりの作業も必要 この辺はシステムで完全に同期が取れてればいいんですがねえ。。。大体バラバラでしょうから。