[Samba] linux-to-linux samba weird problem
neal.p.murphy at alum.wpi.edu
Wed Feb 27 14:00:23 MST 2013
I've a weird problem with Samba. I'm using Samba to share a filesystem between
two linux systems because I believe I need byte range locking to prevent
multiple processes on different computers from reading/writing the same ISAM
I have a Debian wheezy file server running Samba; no domain controller, just a
simple, single share. I have a debian wheezy KVM mounting a share via CIFS,
forcing UID and GID; UID/GID are the same on the two systems. I use a
credentials file with non-root user and password. I disabled oplocks and
client caching. The shared dir has ug+rw for all files, and has ug+x for all
dirs; the same non-root user and group owns all files and dirs. I've even gone
so far as to add ug+s on all dirs, to no avail. General access seems to be OK.
But there's a failure in one specific instance.
On the KVM, I'm running unibasic (business basic). I wrote a program to test
record locking when reading indexed ISAM files. Running it on two KVMs, I
verified that record locking does work; the lock passed between the two
programs very nicely. But I encountered a problem when creating indexed ISAM
When a UB program builds an indexed ISAM DB, it creates both a data file and
an index file on the file server. The problem is that it *always* fails when a
non-root user runs unibasic (it can't create the index structure within the
index file). But it succeeds when running the program as root. Oddly, if I
leave ug+s off the dirs on the server, root:root will own one of the files in
the pair (regardless of forceuid/forcegid on the client mount).
This is perplexing. The CIFS client mount generally works. But for this
particular case, it always fails. The program does work correctly if I run it
on the file server.
Where do I start looking to get to the root of the problem? In Debian's samba
3.6.6? In Debian's CIFS module for linux 3.2? I can save a tcpdump of the
packet exchanges in each case; but I've no idea how to decipher the packet
Is it possibly related to how unibasic names the files? It uses a single name,
say "myisam". The file containing the data records is named in lower case
(myisam); the file containing the c-tree index(es) is named in upper case
(MYISAM). I specified 'case sensitive = yes' in smb.conf and did not specify
'nocase' in the CIFS mount. Is it possible CIFS or Samba (or both) are
inadvertently performing a case insensitive compare? Or otherwise not
differentiating between the two?
More information about the samba