[samba-jp:21399] samba4 の nllm_authを修正しました。

rti super.rti @ gmail.com
2011年 5月 10日 (火) 07:48:54 JST


こんにちは。
はじめまして。 rti と申します。
samba4 aplha15の ntlm_auth がうまく動作しなかったので、修正してみました。

修正ファイルを送ります。
http://rtilabs.net/files/2011_05_10/ntlm_auth.c

修正点
・コマンドラインから動作させたときに check_plaintext_auth関数 が動作しないというか、まったくの未実装だったので
samba3 の実装を参考に実装しなおした。
・local_pw_check_specified関数 を実行すると E_md4hash(opt_password,
nt_pw.hash); でopt_passwordがNULLのためクラッシュするのでsamba3 の実装を参考に実装しなおした。
・require-membership-of が無効になっていたので samba3 や wbinfo の実装を参考に作り直した。(後に補足)
・helper-protocol の動作検証 (ntlm-server-1 / squid-2.5-ntlmssp )の検証を行った。
・helper-protocol に squid-2.5-ntlmssp から require-membership-of 制約が抜け落ちていたので再実装した。
  ntlm-server-1 は pptpd 経由で、 squid-2.5-ntlmssp は apache の
mod_auth_ntlm_winbind 経由で確認しています。


require-membership-ofの後に補足
require-membership-of は、samba3 では winbind 側のプロトコルとして実装されていたが、samba4
では何故か実装されていないようです。
そういう方針なのでしょうか?
たとえば、 いかのようなコードは samba3 の winbind では通りますが、 samba4 では無視されます。(エラーではなく無視)
struct winbindd_request request;
	if (opt_require_membership_of) {
		strlcpy(request.data.auth.opt_require_membership_of,
			opt_require_membership_of,
			sizeof(request.data.auth.opt_require_membership_of));
	}
そのため、 ntlm_auth 側で、
所属グループを確認するルーチンとして実装しました。is_require_membership_of_sid_samba4bugfix関数として実装。


それと、修正点ではなく提案なのですが、 ntlm_auth に スティッキービットをつけませんか?
現在、 squid-2.5-ntlmssp  を使うには、 スティッキービット が必要です。
samba3 の winbind 以上に、いろんなところに書き込み等ができないようで現在これを有効にしないと、
squid-2.5-ntlmssp が動きません。
chmod +s /usr/local/samba/bin/ntlm_auth


ブログにちょっとだけ書いてます。
http://d.hatena.ne.jp/rti7743/20110510/1304856198

以上です。



samba-jp メーリングリストの案内