はまりました。

LDAPでアカウントを管理しているホスト
host-a.example.com
host-b.example.com

があってLDAPにアカウントとして
user-a
user-b

とあってhost-aにuser-aのみシェルアクセスを認めたい場合、

host-a, host-b両方の/etc/ldap.confを


・・・
pam_check_host_attr yes
・・・

としてuser-aのLDAPエントリを


dn: uid=user-a,ou=People,dc=example,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
uid: user-a
uidNumber: 500
gidNumber: 100
cn: user-a
homeDirectory: /home/user-a
loginShell: /bin/bash
host: host-a.example.com

とすればおっけー・・・のはずですが二つほど注意事項があります。

一つはhostアトリビュートのホスト名はそのホストのgethostname関数が返す値、つまりLinuxだと/etc/sysconfig/networkのHOSTNAMEの値になります。DNSのCNAMEなどは使えないみたいです。

今回の場合host-aの/etc/sysconfig/networkは


NETWORKING=yes
HOSTNAME=host-a.example.com

とすればいいわけです。

もう一つはOpenLDAP 2.2からはスキーマチェックが厳しくなったためユーザーのobjectClassとしてよく使われるinetOrgPersonとhostアトリビュートを定義できるobjectClassのaccountが同居できない点です。


・・・
objectClass: inetOrgPerson
objectClass: account
・・・

とすると


RESULT tag=103 err=65 text=invalid structural object class chain (account/inetOrgPerson)

といったログがLDAPサーバーの方で吐かれます。

これを回避するにはスキーマを変更するかスキーマチェックを無視するしかないっぽいです。

ちなみにいいかどうかわかりませんがposixAccountにhostアトリビュートの追加を許すことで解決しました。


objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY
DESC 'Abstraction of an account with POSIX attributes'
MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
MAY ( userPassword $ loginShell $ gecos $ description $ host) )

として


dn: uid=user-a,ou=People,dc=example,dc=com
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
givenName: hoge
sn: hoge
displayName: hoge hoge
uid: user-a
homeDirectory: /home/user-a
loginShell: /bin/bash
cn: user-a
gidNumber: 100
uidNumber: 500
host: host-a.example.com

とすればめでたくinetOrgPersonとhostアトリビュートが同時で使えるようになります。

              

              

トラックバック(0)

トラックバックURL: http://mt.hide-k.net/mt-tb.cgi/394

コメント(2)

まさに探し続けていた情報です、これで嵌っていた作業を一歩進めることができます!
非ッ常に参考になりました。ありがとうございます。

追伸:
印刷して保存しようとしたらエロスな写真がスタンプになっていたので、
仕方なしにダイオウグソクムシとか小ブッシュとかの画像を連続で送りました。
無駄にマシンパワー消費させてしまって申し訳ないです。

たびたび申し訳ないス。
LDAPはパッケージで2.3.27-5使っておりますが、accountのオブジェクトクラスなら
posixAccountと共存できて、かつhostアトリビュートを使えますね。
inetOrgPersonにこだわらないならばaccountを使うのもアリではないでしょうか。

もしくはobjectClass: extensibleObjectをくっつけてみるとか。

コメントする

プロフィール

このブログ記事について

このページは、hideが2005年12月 9日 21:51に書いたブログ記事です。

ひとつ前のブログ記事は「第14節: Villarreal - Barcelona」です。

次のブログ記事は「24 シーズン4」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。