Using NT registry calls to solve CR-LF issue with text files.

Gunnar Degnbol degnbol at danbbs.dk
Mon Feb 7 11:06:06 GMT 2000


At 13:32 07-02-2000 +1100, Luke Kenneth Casson Leighton wrote:
> > It might be possible to add a property sheet to files on Samba shares with
> > the Unix file attributes/owner. It would require some way to communicate
> > the attributes, preferably within the SMB session. Perhaps squatting an
> > unused information level somewhere ?
>
>it's been done before, but not made publicly available (requires
>installation of dll on clients0.  it's a commercial solution.

I think that must be SunLink/Totalnet ?  I believe it includes some kind of 
shell extension for changing Unix attributes.  But I didn't study it in 
detail before I replaced it with Samba.

>go for it.
Ok.  I have looked a little more at it, but it doesn't just require a 
client DLL, it also needs support in Samba.  I have only figured half the 
solution (getting the attributes), and it involves a gross hack on the SMB 
protocol.  I am not sure what the policy on extending Microsoft's protocols 
is, if there is one.

I will describe this from the Windows API side.  Getting the attributes 
could be done by adding an information level to NetFileEnum, with somewhat 
different semantics from the existing levels.  This would return the same 
information as NFS's GETATTR call.

NetFileEnum returns a list of information on open files under a directory 
path. The is either a list of fileids (info level 2, not supported by 
Samba), or a list with fileids and some more useful information (info level 
3).  In NT, NetFileGetInfo can be used with the fileids from info level 2 
to get information (level 2 or 3) on each file 
individually.  NetFileGetInfo is not supported in Windows 9x or by 
Samba.  NetFileEnum is not a close match, but the NetAccessXXX functions 
are not supported by Samba (they are declared obsolete, only for connecting 
to LanMan 2.x, and has been undocumented).

It should not be neccessary to open a file to get the attributes, nor 
should it be neccessary to get the attributes of all the open files in a 
directory tree when only one file or one directory is needed.  Also, 
Windows 95 can't return more than 64 KB of information in one function call.

But if the basepath parameter to NetFileEnum is interpreted as a wildcard 
specification (for all files, not only open files) when used with the new 
info level, it would be possible to get the information that is actually 
needed.

I have not figured out how the attributes can be set.  Setting Unix 
attributes also involves some security and administration 
considerations.  Of course, it could all be done with ls and chmod through 
remote shell, but this would not be useful for anyone who cares much about 
file permissions.


Gunnar




More information about the samba-technical mailing list