[Samba] Samba 3.4.3 and DOS read only

Günter Kukkukk linux at kukkukk.com
Mon Aug 27 16:16:56 MDT 2012


Am Montag, 27. August 2012, 07:08:14 schrieb Jim Gallagher:
> OK, this is getting interesting. When I use smbclient, flipping the RO
> attrib flips sets the unix permissions as expected.
> 
> Here is the basic wireshark trace. This capture below is between the samba
> server and the Windows 2003 client. The capture starts after I have the
> file properties dialog up, but before I set RO and select "OK".
> 
> No.     Time        Source                Destination           Protocol
> Info
>       1 0.000000    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>       2 0.001328    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>       3 0.001586    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>       4 0.002703    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>       5 0.002824    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query FS Volume Info
>       6 0.003585    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>       7 0.003674    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query FS Attribute Info
>       8 0.004379    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>       9 0.004538    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      10 0.005512    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      11 0.005701    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      12 0.006656    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      13 0.006747    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query FS Attribute Info
>      14 0.007461    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>      15 0.008554    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      16 0.009607    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      17 0.009771    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      18 0.010686    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      19 0.010811    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query FS Volume Info
>      20 0.011535    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>      21 0.011614    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query FS Attribute Info
>      22 0.012330    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>      23 0.012480    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      24 0.013417    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      25 0.013582    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      26 0.014480    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      27 0.014879    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query FS Attribute Info
>      28 0.030232    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>      29 0.070392    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      30 0.071543    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      31 0.071681    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query Full FS Size Info
>      32 0.072603    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>      33 0.073288    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      34 0.074264    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      35 0.074354    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query Full FS Size Info
>      36 0.075160    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>      37 0.076763    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      38 0.077791    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      39 0.077905    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query Full FS Size Info
>      40 0.088850    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>      41 0.093045    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      42 0.097632    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      43 0.097814    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FS_INFO, Query Full FS Size Info
>      44 0.098672    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_FS_INFO
>      45 0.233616    <server IP>          <client IP>        TCP
> ls3bcast > microsoft-ds [ACK] Seq=1701 Ack=2123 Win=63756 Len=0
>      46 2.635716    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path: \test.c
>      47 2.636974    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      48 2.637319    <server IP>          <client IP>        SMB      NT
> Create AndX Request, FID: 0x2c3d, Path: \test.c
>      49 2.638538    <client IP>        <server IP>          SMB      NT
> Create AndX Response, FID: 0x2c3d
>      50 2.638638    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FILE_INFO, FID: 0x2c3d, Query File Internal Info
>      51 2.639515    <client IP>        <server IP>          SMB      Trans2
> Response, FID: 0x2c3d, QUERY_FILE_INFO
>      52 2.640022    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FILE_INFO, FID: 0x2c3d, Query File Basic Info
>      53 2.640894    <client IP>        <server IP>          SMB      Trans2
> Response, FID: 0x2c3d, QUERY_FILE_INFO
>      54 2.641001    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_FILE_INFO, FID: 0x2c3d, Query File Standard Info
>      55 2.641861    <client IP>        <server IP>          SMB      Trans2
> Response, FID: 0x2c3d, QUERY_FILE_INFO
>      56 2.642063    <server IP>          <client IP>        SMB      Trans2
> Request, SET_FILE_INFO, FID: 0x2c3d
>      57 2.642842    <client IP>        <server IP>          SMB      Trans2
> Response, FID: 0x2c3d, SET_FILE_INFO
>      58 2.642976    <server IP>          <client IP>        SMB      Close
> Request, FID: 0x2c3d
>      59 2.643961    <client IP>        <server IP>          SMB      Close
> Response, FID: 0x2c3d
>      60 2.645734    <server IP>          <client IP>        SMB      NT
> Create AndX Request, Path: \Thumbs.db
>      61 2.646674    <client IP>        <server IP>          SMB      NT
> Create AndX Response, FID: 0x0000, Error: STATUS_OBJECT_NAME_NOT_FOUND
>      62 2.648820    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      63 2.650038    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      64 2.650707    <server IP>          <client IP>        SMB      Trans2
> Request, FIND_FIRST2, Pattern: \test.c
>      65 2.651792    <client IP>        <server IP>          SMB      Trans2
> Response, FIND_FIRST2, Files: test.c
>      66 2.664268    <server IP>          <client IP>        SMB
> Session Setup AndX Request, NTLMSSP_NEGOTIATE
>      67 2.664415    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      68 2.664878    <client IP>        <server IP>          TCP
> microsoft-ds > ls3bcast [ACK] Seq=3054 Ack=2944 Win=65535 Len=0
>      69 2.665736    <client IP>        <server IP>          SMB
> Session Setup AndX Response, NTLMSSP_CHALLENGE, Error:
> STATUS_MORE_PROCESSING_REQUIRED
>      70 2.666220    <server IP>          <client IP>        SMB
> Session Setup AndX Request, NTLMSSP_AUTH, User: \
>      71 2.666308    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      72 2.666716    <server IP>          <client IP>        SMB      Trans2
> Request, FIND_FIRST2, Pattern: \test.c
>      73 2.667233    <client IP>        <server IP>          TCP
> microsoft-ds > ls3bcast [ACK] Seq=3530 Ack=3360 Win=65535 Len=0
>      74 2.675369    <client IP>        <server IP>          SMB
> Session Setup AndX Response
>      75 2.675710    <server IP>          <client IP>        SMB      Tree
> Connect AndX Request, Path: \\server.domain.com\IPC$
>      76 2.676012    <client IP>        <server IP>          SMB      Trans2
> Response, FIND_FIRST2, Files: test.c
>      77 2.677337    <server IP>          <client IP>        SMB      Trans2
> Request, QUERY_PATH_INFO, Query File Basic Info, Path:
>      78 2.677949    <client IP>        <server IP>          TCP
> microsoft-ds > ls3bcast [ACK] Seq=3870 Ack=3572 Win=65535 Len=0
>      79 2.678581    <client IP>        <server IP>          SMB      Tree
> Connect AndX Response
>      80 2.678906    <server IP>          <client IP>        SMB      Trans2
> Request, GET_DFS_REFERRAL, File: \server.domain.com\test
>      81 2.679080    <client IP>        <server IP>          SMB      Trans2
> Response, QUERY_PATH_INFO
>      82 2.679392    <server IP>          <client IP>        SMB      Trans2
> Request, FIND_FIRST2, Pattern: \test.c
>      83 2.679838    <client IP>        <server IP>          SMB      Trans2
> Response, GET_DFS_REFERRAL, Error: STATUS_NOT_FOUND
>      84 2.686475    <client IP>        <server IP>          SMB      Trans2
> Response, FIND_FIRST2, Files: test.c
>      85 2.686546    <server IP>          <client IP>        TCP
> ls3bcast > microsoft-ds [ACK] Seq=3822 Ack=4253 Win=63413 Len=0
>      86 2.699063    <server IP>          <client IP>        SMB      Trans2
> Request, GET_DFS_REFERRAL, File: \server.domain.com\test
>      87 2.700549    <client IP>        <server IP>          SMB      Trans2
> Response, GET_DFS_REFERRAL, Error: STATUS_NOT_FOUND
>      88 2.858660    <server IP>          <client IP>        TCP
> ls3bcast > microsoft-ds [ACK] Seq=3972 Ack=4292 Win=63374 Len=0
> 

In that (ascii) wireshark trace, the command which would affect dos
attributes, is SET_FILE_INFO - which is seen once in your trace above.
Unfortunately the "File Attributes" are not listed in this short format.

I've now also used windows file explorer's "file properties dialog" with
  - a 32Bit windows XP Pro box
  - a 64Bit windows 7 (home) box ("max protocol = NT1" set in smb.conf)

With both all is working as expected.
Both use the trans2 SET_FILE_INFO request (infolevel 1004) to set or
unset the dos attributes (traced with wirehark).
Also the samba smbd log contains the corresponding lines (log level = 4):

[2012/08/27 23:07:37.031309,  3] smbd/trans2.c:8078(call_trans2setfilepathinfo)
  call_trans2setfilepathinfo(8) test.fil (fnum 46646) info_level=1004 totdata=40
[2012/08/27 23:07:37.031442,  3] smbd/trans2.c:7654(smbd_do_setfilepathinfo)
  smbd_do_setfilepathinfo: test.fil (fnum 46646) info_level=1004 totdata=40
[2012/08/27 23:07:37.031658,  3] smbd/dosmode.c:160(unix_mode)
  unix_mode(test.fil) returning 0644
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The latest line above should be seen in your smbd log, too!

If you like, take a new sniff when toggling the read only 
bit 2 times - so on/off 2 times (using the file properties dialog).
Save that file with wireshark as a binary file in standard pcap format
and mail it to kukks at samba dot org.
A corresponding debug 4 smbd logfile would be great.

Cheers, Günter

---
Note, cause i'm testing with latest samba git tree version, i had
to set "max protocol = NT1" in smb.conf when using win7 to match
your settings.
But also with the new SMB2 calls, all is working fine.

> On Sun, Aug 26, 2012 at 4:24 PM, Günter Kukkukk <linux at kukkukk.com> wrote:
> > when you change a dos attribute, within wireshark you should see
> > 
> >   Set Information Request, Path:\yourfile
> >   Set Information Response
> > 
> > packet pairs on the wire.
> > The passed "File Attributes" can be also viewed.
> > 
> > Haven't tried windows7 here, whether it uses a different approach.
> > 
> > Can you try on your server itself:
> > smbclient //localhost/test -U jim
> > ... pw entry
> > smb: \> setmode yourfile +r
> > smb: \> setmode yourfile -r
> > 
> > Cheers, Günter



More information about the samba mailing list