Winbind

Windows Server (Active Directory, AD) との連携を試してみた。

pkgsrc (2012Q2) から Samba (net/samba, samba-3.6.5) をインストール。

$ sudo net ads join -U (ユーザ)
...
Failed to join domain: failed to set machine spn: Constraint violation

エラー。

ドメインに参加させようとしているホストと、AD のドメインが一致していないとダメらしい。

AD の DNS への登録権限は持ってないので、/etc/hosts に適当に追加。

今度は

Client not found in Kerberos database

適当に /etc/krb5.conf に AD の realm の設定をして kinit の実行したら net ads join も成功した。こんな手順なのか?ネットで調べたと若干違うような気がするけど、再現できないからよくわからない。AD に登録されたホストを消す方法も不明(ADへのログオン権限ないので)。

winbindd を起動して、まずは動作確認。

$ wbinfo -t
checking the trust secret for domain (ADドメイン) via RPC calls succeeded
$ wbinfo -a (ADドメインユーザ)
Enter (ADドメインユーザ)'s password:
plaintext password authentication succeeded
Enter (ADドメインユーザ)'s password:
challenge/response password authentication failed
error code was NT_STATUS_WRONG_PASSWORD (0xc000006a)
error message was: Wrong Password
Could not authenticate user (ADドメインユーザ) with challenge/response

AD への接続は O.K.、plain text のパスワード認証は O.K.、challenge の認証がこけている。調べたけれど類似の事例が見つからず。とりあえず先に進んでみる。

/etc/nsswitch.conf に winbind を追加して接続…失敗。

$ id (ADドメインユーザ)
id: (ADドメインユーザ): No such user

winbind のログを見ても、どうなっているのかさっぱり不明。ユーザを検索しているように見えない。

ktrace しろとのお告げに従って、

$ ktrace id (ADドメインユーザ)
...
$ kdump
...
804      1 id       CALL  open(0xbfbfe038,0,0)
804      1 id       NAMI  "/usr/lib/nss_winbind.so.0"
804      1 id       RET   open -1 errno 2 No such file or directory
...

あれれ、失敗しているよ。

$ ls -l /usr/lib/nss_winbind.so.0
lrwxr-xr-x  1 root  wheel  29 Oct  2 11:08 /usr/lib/nss_winbind.so.0 -> /usr/pkg/lib/nss_winbind.so.0
$ file /usr/lib/nss_winbind.so.0
/usr/lib/nss_winbind.so.0: broken symbolic link to `/usr/pkg/lib/nss_winbind.so.0'

???

$ ls -l /usr/pkg/lib/nss_*
-rwxr-xr-x  1 root  wheel    39022 Oct  2 11:07 /usr/pkg/lib/nss_winbind.so
-rwxr-xr-x  1 root  wheel  1437639 Oct  2 11:07 /usr/pkg/lib/nss_wins.so

おや、まあ。

$ cd /usr/pkg/lib
$ sudo ln -s nss_winbind.so nss_winbind.so.0
$ getent passwd (ADドメインユーザ)
(ADドメインユーザ):*:10000:10006::/home/(ADドメイン)/(ユーザ):/bin/false

まずは一段階クリア。

$ id (ADドメインユーザ)
...反応なし

問合せに時間がかかっているのか、ハングアップしているのかどっちかわからん。

放置していたら、成功してた。でも時間を計ろうと time id を実行したら 2 分ぐらいして No such user を返してきた。

どっちにしてもこのままでは使い物にならないな。設定で何とかなるんだろうか。