[samba-jp:21437] smbtortureのRAW-SFILEINFOでMODE_INFORMATIONに失敗します

梅本 和生 umemoto-k @ sei-networks.com
2011年 6月 13日 (月) 14:42:26 JST


 はじめまして、梅本と申します。

現在、sambaを利用するにあたってお客様からの要望でsmbtortureの
RAW-SFILEINFOをsuccessで通すための調整を行っていますが、
MODE_INFORMATIONの最初のsetpathinfoのテストの設定後チェックが
上手く通せません。

smbtortureはsamba3.5.8のsource4の物を、サーバーはsamba3.0.37を使用してい
ます。

smbdを立ち上げて端末でsmbtortureを実行するといくつかエラーが出ます。

# smbtorture -Uroot%'' -Tsamba3 //192.168.1.1/default RAW-SFILEINFO

...

test mode_information level
(torture/raw/setfileinfo.c:406) MODE_INFORMATION - mode_information/mode
should be 0x2 - 0x20
create_time: Wed Dec 31 17:00:25 1969 MST
access_time: Wed Dec 31 17:00:25 1969 MST
write_time: Wed Dec 31 17:00:25 1969 MST
change_time: Wed Dec 31 17:00:25 1969 MST
attrib: 0x20
alloc_size: 512
size: 7
nlink: 1
delete_pending: 0
directory: 0
ea_size: 41
fname: '\testsfileinfo\fnum_test_23.txt'
(torture/raw/setfileinfo.c:409) MODE_INFORMATION - mode_information/mode
should be 0x0 - 0x20
create_time: Wed Dec 31 17:00:25 1969 MST
access_time: Wed Dec 31 17:00:25 1969 MST
write_time: Wed Dec 31 17:00:25 1969 MST
change_time: Wed Dec 31 17:00:25 1969 MST
attrib: 0x20
alloc_size: 512
size: 7
nlink: 1
delete_pending: 0
directory: 0
ea_size: 41
fname: '\testsfileinfo\fname_test_23.txt'
(torture/raw/setfileinfo.c:417) MODE_INFORMATION - mode_information/mode
should be 0x0 - 0x20
create_time: Wed Dec 31 17:00:25 1969 MST
access_time: Wed Dec 31 17:00:25 1969 MST
write_time: Wed Dec 31 17:00:25 1969 MST
change_time: Wed Dec 31 17:00:25 1969 MST
attrib: 0x20
alloc_size: 512
size: 7
nlink: 1
delete_pending: 0
directory: 0
ea_size: 41
fname: '\testsfileinfo\fnum_test_23.txt'
(torture/raw/setfileinfo.c:420) MODE_INFORMATION - mode_information/mode
should be 0x0 - 0x20
create_time: Wed Dec 31 17:00:25 1969 MST
access_time: Wed Dec 31 17:00:25 1969 MST
write_time: Wed Dec 31 17:00:25 1969 MST
change_time: Wed Dec 31 17:00:25 1969 MST
attrib: 0x20
alloc_size: 512
size: 7
nlink: 1
delete_pending: 0
directory: 0
ea_size: 41
fname: '\testsfileinfo\fname_test_23.txt'

...

このエラーのうち、(torture/raw/setfileinfo.c:409)を除くエラーは
source/smbd/trans2.c の smb_file_mode_information() から
smb_set_file_dosmode() を呼ぶことで解消できました。
しかし、(torture/raw/setfileinfo.c:409)のエラーは

(torture/raw/setfileinfo.c:409) MODE_INFORMATION - mode_information/mode
should be 0x0 - 0x2

となって残りました。

そこでMODE_INFORMATIONの動作について自前で解析したところ、
http://samba.org/samba/devel/smbtorture-raw-functions.txt では

Request is made using the MODE_INFORMATION (1016) info level. File is
referenced by NAME.
Set file mode to 0.

SMBTorture Output: None.

Tests/Expectations:
Server should respond with NT_STATUS_OK
MODE_INFORMATION query response should show that the file mode is set to 0.
Notes:
Same test as above except the file is referenced by name.

と書かれていてsetpathinfoでmodeに0を設定したときqfileinfoでmodeに0が
設定されているよう動くのが正しいように読み取れます。
しかし、smbtortureのソースコード(source4/torture/raw/setfileinfo.c)では
setpathinfoでmodeに2を設定して、qfileinfoでmodeに0が設定されていることを
確認しています。
また、実際の送信パケットも確認しましたがsetpathinfoにはmode=2が
設定されていました。

恐らく source4/torture/raw/setfileinfo.c のコードで
setpathinfo前にmode=0の設定が抜けているのではないかと
思っているのですが、setpathinfoではmode=2を設定されてもmode=0に
なる仕様である可能性もあるためsmbtortureを修正するべきか
smbdを修正するべきか判断に悩んでいます。
(MicrosoftのCIFS仕様書 [MS-CIFS] も確認しましたが
MODE_INFORMATION については何も書かれていませんでした)

この件についてsmbtortureのミスなのかsetpathinfoではmode=2を設定すると
0になるのが正しい動作なのかご存知の方がいればご教授お願い致します。





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