CIFS extensions for UNIX
John Newbigin
jn at it.swin.edu.au
Sat Feb 2 02:35:03 GMT 2002
Jeremy Allison wrote:
> On Fri, Feb 01, 2002 at 03:21:21PM +1100, John Newbigin wrote:
>
>>I have implemented follow_link which makes symlinks work properly on the
>>client but it highligts a problem with SMB_QUERY_FILE_UNIX_BASIC.
>>
>>There needs to be a version which always does an lstat
>>(SMB_QUERY_FILE_UNIX_LINK_BASIC?) (does_this_name_look_to_long?). This
>>needs to be the same as SMB_QUERY_FILE_UNIX_BASIC in all respects except
>>that it does an lstat.
>>
>>There are also other stat v lstat problems with the current samba code.
>>SMB_QUERY_FILE_UNIX_LINK currently does no do an lstat.
>>
>>In trans2.c call_trans2qfilepathinfo() there is some code which is
>>perhaps meant to address this but I can't see how/what it is attempting
>>to do:
>>
>
> Yes this was broken. I've (hopefully) fixed this in SAMBA_2_2 CVS
> today. Please check out and test asap. I won't hold the release
> for this.
This appears to work now :)
>
>
>>At any rate, the server needs to allow the client do request a stat or
>>an lstat when it does a query.
>>
>
> The new code always does a lstat for UNIX extensions.
Would a client ever want to do a stat? Not if links are followed on the
client side but smbclient for example would not want to do this. It
then would want to use a stat. Also in directory listings it may not
want to know about links.
There are a number of constants SMB_xxx_NO_CHANGE. These are all
0xFFFFFFFF, a 32 bit number even though they are for a 64 bit data type.
Should they all then be 0xFFFFFFFFFFFFFFFF?
Also, what about a SMB_SIZE_NO_CHANGE? I can send a new patch if you want.
As for SMB_TIME_NO_CHANGE. 0 and -1 are treated as no change but they
are used after interpret_long_date() has converted the date. using
0xFFFFFFFFFFFFFFFF would remain consistant with the other NO_CHANGE
constants and can be checked before the conversion (or as part of the
conversion).
>
>
>>Another issue relating to links is that samba appears to not want to
>>create dangling symlinks. If symlinks are for the clients to resolve
>>then this will prevent the creation of symlinks. This needs to be
>>addressed. If it is a security issue then a config option to turn it on
>>and off is probably required.
>>
>
> Yes this is a security issue - allowing dangling symlinks means
> clients that don't resolve symlinks could open any file on the
> system. A config option has already been discussed but I wasn't
> going to make 2.2.3 wait for it.
The server can still check to make sure that the link is within the
share, and the users permissions are still checked on the target.
I don't think any of these issues need to be addressed before 2.2.3. I
assume that these extensions are still going to be an experimental
feature in 2.2.3.
Another issue which will require some long term though is case
sensitivity. I have come across a directory with a file called
"INSTALL" and a sub directory called "install". Accessing either of
these files caused errors to be reported.
John.
PS: You can get my latest smbfs patch from here
http://uranus.it.swin.edu.au/~jn/linux/smbfs/smbfs.diff2
Make sure that your smbd checks for SMB_SIZE_NO_CHANGE before you try
changing any file properties or you will end up with some big files.
PPS: Make sure that SMB_SIZE_NO_CHANGE is the same for the client and
the server.
>
> Jeremy.
>
>
>
>
More information about the samba-technical
mailing list