Peter Piechutzki
2004-Oct-15 10:39 UTC
[Samba] Directory Name '.../pipe' not allowed ? Samba Bug ?
Hi All, scenario: Samba Version 2.2.8a-UL running on Suse Linux Enterprise 8 Kernel Version 2.4.21-241-smp as Server Windows 2000 SP4 as Client Trying to import a MS-Foxpro file into MS-ACCESS. MS-Foxpro File residing on Samba Server. The Foxpro filename is 'projects.dbf'. During import MS-Access tries to also open a non existent file 'projects.inf' depending on the path in which the file resides Samba will return different Error Messages to the smb client (windows machine) either NT_STATUS_OBJECT_NAME_NOT_FOUND which is correct (Example 1) or NT_STATUS_ACCESS_DENIED which is the wrong return code. (Example 2) Aur problem was that a filename like 'cad/pipe/projects.dbf' resulted in the access denied message wich led the MS-Access Programm into error whilst a filename like 'test/pipe/projects.dbf' will return with the correct file not found. Any 3 letter or less path before the /pipe/ results in the error. We've managed to level it down to the "Check a filename for the pipe string." Function static void check_for_pipe(const char *fname) in the Samba source code 'open.c'. Our solution for now is not to name any directory 'pipe' so that the parsing function won't get confused but this can't really be a solution. Any Ideas welcome. Best regards Peter Piechutzki **********************Example 1 working o.k.******************************** [2004/10/15 10:24:52, 10] smbd/mangle_hash.c:is_mangled(317) is_mangled: projects.INF : False [2004/10/15 10:24:52, 5] smbd/filename.c:unix_convert(319) New file projects.INF [2004/10/15 10:24:52, 3] smbd/dosmode.c:unix_mode(111) unix_mode(Zwischenablage/Jaeger/pipe/projects.INF) returning 0777 [2004/10/15 10:24:52, 5] smbd/files.c:file_new(123) allocated file structure 9547, fnum = 13643 (3 used) [2004/10/15 10:24:52, 10] smbd/open.c:open_file_shared1(808) open_file_shared: fname = Zwischenablage/Jaeger/pipe/projects.INF, share_mode = 40, ofun = 1, mode = 777, oplock request = 0 [2004/10/15 10:24:52, 8] lib/util.c:is_in_path(1145) is_in_path: Zwischenablage/Jaeger/pipe/projects.INF [2004/10/15 10:24:52, 8] lib/util.c:is_in_path(1150) is_in_path: no name list. [2004/10/15 10:24:52, 3] lib/util.c:unix_clean_name(387) unix_clean_name [Zwischenablage/Jaeger/pipe/projects.INF] [2004/10/15 10:24:52, 4] smbd/open.c:open_file_shared1(974) calling open_file with flags=0x0 flags2=0x0 mode=0777 [2004/10/15 10:24:52, 10] smbd/open.c:fd_open(53) fd_open: name Zwischenablage/Jaeger/pipe/projects.INF, flags = 00 mode 0777, fd = -1. No such file or directory [2004/10/15 10:24:52, 3] smbd/open.c:open_file(177) Error opening file Zwischenablage/Jaeger/pipe/projects.INF (No such file or directory) (local_flags=0) (flags=0) [2004/10/15 10:24:52, 5] smbd/files.c:file_free(346) freed files structure 13643 (2 used) [2004/10/15 10:24:52, 3] smbd/error.c:error_packet(94) error string = No such file or directory [2004/10/15 10:24:52, 3] smbd/error.c:error_packet(113) error packet at smbd/nttrans.c(889) cmd=162 (SMBntcreateX) NT_STATUS_OBJECT_NAME_NOT_FOUND **********************Example 2 WRONG ERRROR PACKET ******************************** [2004/10/14 17:29:21, 10] smbd/mangle_hash.c:is_mangled(317) is_mangled: projects.INF : False [2004/10/14 17:29:21, 5] smbd/filename.c:unix_convert(319) New file projects.INF [2004/10/14 17:29:21, 3] smbd/dosmode.c:unix_mode(111) unix_mode(cad/pipe/projects.INF) returning 0777 [2004/10/14 17:29:21, 5] smbd/files.c:file_new(123) allocated file structure 4092, fnum = 8188 (3 used) [2004/10/14 17:29:21, 10] smbd/open.c:open_file_shared1(808) open_file_shared: fname = cad/pipe/projects.INF, share_mode = 40, ofun 1, mode = 777, oplock request = 0 [2004/10/14 17:29:21, 8] lib/util.c:is_in_path(1145) is_in_path: cad/pipe/projects.INF [2004/10/14 17:29:21, 8] lib/util.c:is_in_path(1150) is_in_path: no name list. [2004/10/14 17:29:21, 3] lib/util.c:unix_clean_name(387) unix_clean_name [cad/pipe/projects.INF] [2004/10/14 17:29:21, 4] smbd/open.c:open_file_shared1(974) calling open_file with flags=0x0 flags2=0x0 mode=0777 [2004/10/14 17:29:21, 10] smbd/open.c:fd_open(53) fd_open: name cad/pipe/projects.INF, flags = 00 mode = 0777, fd = -1. No such file or directory [2004/10/14 17:29:21, 3] smbd/open.c:open_file(177) Error opening file cad/pipe/projects.INF (No such file or directory) (local_flags=0) (flags=0) [2004/10/14 17:29:21, 3] smbd/open.c:check_for_pipe(81) Rejecting named pipe open for cad/pipe/projects.INF [2004/10/14 17:29:21, 5] smbd/files.c:file_free(346) freed files structure 8188 (2 used) [2004/10/14 17:29:21, 3] smbd/error.c:error_packet(94) error string = No such file or directory [2004/10/14 17:29:21, 3] smbd/error.c:error_packet(113) error packet at smbd/nttrans.c(889) cmd=162 (SMBntcreateX) NT_STATUS_ACCESS_DENIED ******************OUR SMB.CONF************************ # Samba config file created using SWAT # from 0.0.0.0 (0.0.0.0) # Date: 2004/06/17 14:04:34 # Global parameters [global] workgroup = OURDOMAIN.DE netbios name = FILESERVER server string = Our Fileserver Samba %v interfaces = 192.168.1.10/24 encrypt passwords = Yes min passwd length = 2 map to guest = Bad User unix password sync = Yes log level = 1 log file = /var/log/samba/log.%m time server = Yes unix extensions = Yes socket options = SO_KEEPALIVE TCP_NODELAY IPTOS_LOWDELAY printcap name = CUPS add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u os level = 255 domain logons = Yes local master = Yes security = user preferred master = Yes domain master = Yes wins support = Yes admin users = @administratoren printing = cups deadtime = 0 acl compatibility = win2k [Konstruktion] comment = Zeichnungen und Konstruktionsdaten path = /daten/konstruktion valid users @cad_user_admin,@cad_user,@cad_user_leser,@administratoren,@olymp admin users = @administratoren,@cad_user_admin read only = No force create mode = 0777 force directory mode = 0777
rruegner
2004-Oct-15 10:56 UTC
[Samba] Directory Name '.../pipe' not allowed ? Samba Bug ?
Hi, first of all update your samba version , you find suses samba 3 packs on ftp.suse.com projects samba data base errors are well known read here Kernel Oplocks are essentially a method that allows the Linux kernel to co-exist with Samba's oplocked files, although this has provided better integration of MS Windows network file locking with the underlying OS, SGI IRIX and Linux are the only two OSs that are oplock-aware at this time. Unless your system supports kernel oplocks, you should disable oplocks if you are accessing the same files from both UNIX/Linux and SMB clients. Regardless, oplocks should always be disabled if you are sharing a database file (e.g., Microsoft Access) between multiple clients, as any break the first client receives will affect synchronization of the entire file (not just the single record), which will result in a noticeable performance impairment and, more likely, problems accessing the database in the first place. Notably, Microsoft Outlook's personal folders (*.pst) react quite badly to oplocks. If in doubt, disable oplocks and tune your system from that point. http://us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/locking.html a solution maybe You can disable oplocks on a per-share basis with the following: [acctdata] oplocks = False level2 oplocks = False The default oplock type is Level1. Level2 oplocks are enabled on a per-share basis in the smb.conf file. Alternately, you could disable oplocks on a per-file basis within the share: veto oplock files = /*.mdb/*.MDB/*.dbf/*.DBF/ Regards Peter Piechutzki schrieb:> Hi All, > > scenario: > Samba Version 2.2.8a-UL > running on Suse Linux Enterprise 8 > Kernel Version 2.4.21-241-smp > as Server > > Windows 2000 SP4 as Client > > Trying to import a MS-Foxpro file into MS-ACCESS. MS-Foxpro File residing on > Samba Server. > The Foxpro filename is 'projects.dbf'. During import MS-Access tries to also > open a non existent file 'projects.inf' > depending on the path in which the file resides Samba will return different > Error Messages to the smb client (windows machine) > > either NT_STATUS_OBJECT_NAME_NOT_FOUND which is correct (Example 1) > > or NT_STATUS_ACCESS_DENIED which is the wrong return code. (Example 2) > > Aur problem was that a filename like 'cad/pipe/projects.dbf' resulted in the > access denied message wich led the MS-Access Programm into error whilst a > filename like 'test/pipe/projects.dbf' will return with the correct file not > found. > > Any 3 letter or less path before the /pipe/ results in the error. We've > managed to level it down to the "Check a filename for the pipe string." > Function > static void check_for_pipe(const char *fname) in the Samba source code > 'open.c'. > > Our solution for now is not to name any directory 'pipe' so that the parsing > function won't get confused but this can't really be a solution. > > Any Ideas welcome. > > Best regards > > Peter Piechutzki > > > **********************Example 1 working o.k.******************************** > [2004/10/15 10:24:52, 10] smbd/mangle_hash.c:is_mangled(317) > is_mangled: projects.INF : False > [2004/10/15 10:24:52, 5] smbd/filename.c:unix_convert(319) > New file projects.INF > [2004/10/15 10:24:52, 3] smbd/dosmode.c:unix_mode(111) > unix_mode(Zwischenablage/Jaeger/pipe/projects.INF) returning 0777 > [2004/10/15 10:24:52, 5] smbd/files.c:file_new(123) > allocated file structure 9547, fnum = 13643 (3 used) > [2004/10/15 10:24:52, 10] smbd/open.c:open_file_shared1(808) > open_file_shared: fname = Zwischenablage/Jaeger/pipe/projects.INF, > share_mode = 40, ofun = 1, mode = 777, oplock request = 0 > [2004/10/15 10:24:52, 8] lib/util.c:is_in_path(1145) > is_in_path: Zwischenablage/Jaeger/pipe/projects.INF > [2004/10/15 10:24:52, 8] lib/util.c:is_in_path(1150) > is_in_path: no name list. > [2004/10/15 10:24:52, 3] lib/util.c:unix_clean_name(387) > unix_clean_name [Zwischenablage/Jaeger/pipe/projects.INF] > [2004/10/15 10:24:52, 4] smbd/open.c:open_file_shared1(974) > calling open_file with flags=0x0 flags2=0x0 mode=0777 > [2004/10/15 10:24:52, 10] smbd/open.c:fd_open(53) > fd_open: name Zwischenablage/Jaeger/pipe/projects.INF, flags = 00 mode > 0777, fd = -1. No such file or directory > [2004/10/15 10:24:52, 3] smbd/open.c:open_file(177) > Error opening file Zwischenablage/Jaeger/pipe/projects.INF (No such file > or directory) (local_flags=0) (flags=0) > [2004/10/15 10:24:52, 5] smbd/files.c:file_free(346) > freed files structure 13643 (2 used) > [2004/10/15 10:24:52, 3] smbd/error.c:error_packet(94) > error string = No such file or directory > [2004/10/15 10:24:52, 3] smbd/error.c:error_packet(113) > error packet at smbd/nttrans.c(889) cmd=162 (SMBntcreateX) > NT_STATUS_OBJECT_NAME_NOT_FOUND > > > **********************Example 2 WRONG ERRROR PACKET > ******************************** > [2004/10/14 17:29:21, 10] smbd/mangle_hash.c:is_mangled(317) > is_mangled: projects.INF : False > [2004/10/14 17:29:21, 5] smbd/filename.c:unix_convert(319) > New file projects.INF > [2004/10/14 17:29:21, 3] smbd/dosmode.c:unix_mode(111) > unix_mode(cad/pipe/projects.INF) returning 0777 > [2004/10/14 17:29:21, 5] smbd/files.c:file_new(123) > allocated file structure 4092, fnum = 8188 (3 used) > [2004/10/14 17:29:21, 10] smbd/open.c:open_file_shared1(808) > open_file_shared: fname = cad/pipe/projects.INF, share_mode = 40, ofun > 1, mode = 777, oplock request = 0 > [2004/10/14 17:29:21, 8] lib/util.c:is_in_path(1145) > is_in_path: cad/pipe/projects.INF > [2004/10/14 17:29:21, 8] lib/util.c:is_in_path(1150) > is_in_path: no name list. > [2004/10/14 17:29:21, 3] lib/util.c:unix_clean_name(387) > unix_clean_name [cad/pipe/projects.INF] > [2004/10/14 17:29:21, 4] smbd/open.c:open_file_shared1(974) > calling open_file with flags=0x0 flags2=0x0 mode=0777 > [2004/10/14 17:29:21, 10] smbd/open.c:fd_open(53) > fd_open: name cad/pipe/projects.INF, flags = 00 mode = 0777, fd = -1. No > such file or directory > [2004/10/14 17:29:21, 3] smbd/open.c:open_file(177) > Error opening file cad/pipe/projects.INF (No such file or directory) > (local_flags=0) (flags=0) > [2004/10/14 17:29:21, 3] smbd/open.c:check_for_pipe(81) > Rejecting named pipe open for cad/pipe/projects.INF > [2004/10/14 17:29:21, 5] smbd/files.c:file_free(346) > freed files structure 8188 (2 used) > [2004/10/14 17:29:21, 3] smbd/error.c:error_packet(94) > error string = No such file or directory > [2004/10/14 17:29:21, 3] smbd/error.c:error_packet(113) > error packet at smbd/nttrans.c(889) cmd=162 (SMBntcreateX) > NT_STATUS_ACCESS_DENIED > > ******************OUR SMB.CONF************************ > > # Samba config file created using SWAT > # from 0.0.0.0 (0.0.0.0) > # Date: 2004/06/17 14:04:34 > > # Global parameters > [global] > workgroup = OURDOMAIN.DE > netbios name = FILESERVER > server string = Our Fileserver Samba %v > interfaces = 192.168.1.10/24 > encrypt passwords = Yes > min passwd length = 2 > map to guest = Bad User > unix password sync = Yes > log level = 1 > log file = /var/log/samba/log.%m > time server = Yes > unix extensions = Yes > socket options = SO_KEEPALIVE TCP_NODELAY IPTOS_LOWDELAY > printcap name = CUPS > add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u > os level = 255 > domain logons = Yes > local master = Yes > security = user > preferred master = Yes > domain master = Yes > wins support = Yes > admin users = @administratoren > printing = cups > deadtime = 0 > acl compatibility = win2k > > [Konstruktion] > comment = Zeichnungen und Konstruktionsdaten > path = /daten/konstruktion > valid users > @cad_user_admin,@cad_user,@cad_user_leser,@administratoren,@olymp > admin users = @administratoren,@cad_user_admin > read only = No > force create mode = 0777 > force directory mode = 0777 > >