[Samba] Strange problem with MS Office while saving

Gionatan Danti g.danti at assyoma.it
Wed Oct 28 18:18:15 UTC 2015


Hi all,
I sometime have a strange behavior when using MS Office and saving 
files.

First things first:
- OS CentOS 6.7 x86_64
- SAMBA version 3.6.23, configured as member server (see [1] for full 
configuration)
- inotifywait watching my shares to replicate them off-site
- about 100 W7/W8 clients with MS Office 2010

Using inotifywait, I tracked how MS Office file save function works. 
Basically, when clicking on the "diskette" icon, Office do the following 
thing:
- create a temporary file with the new content (AAAAAAAA.tmp)
- rename the original file (text.xls) to a new temporary name 
(BBBBBBBB.tmp)
- rename the first temporary file (AAAAAAAA.tmp) to the original 
filename (test.xls)
- delete the second temporary file (BBBBBBBB.tmp)

The above renaming valzer works flawlessy 99.9% of times, but sometime 
it "hang" at point n.3 - renaming the first temporary file to the 
original filename. Using inotifywait, I see something similar:
- create a temporary file with the new content (AAAAAAAA.tmp)
- rename the original file (text.xls) to a new temporary name 
(BBBBBBBB.tmp)
- <nothing>
- delete the second temporary file (BBBBBBBB.tmp)

The net results is that the user "lose" a file, because it can't see any 
file with the original filename and the on-disk temporary file tell it 
nothing (its name being randomly generated).

Knowing that the inotify stack can lose events, I enabled samba log and 
searched for something related. Sadly, samba logs perfectly mirror what 
inotifywait shown: the first temporary file rename is never executed 
(nor it reached the samba server).

Any ideas on what is happening here?
I searched the list, but found nothing related.

Thanks.

[1] testparm -vvv output:
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit 
(16384)
Processing section "[DATI]"
Processing section "[EDP]"
Processing section "[UTILITY]"
Processing section "[ARCHIVE]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

[global]
         dos charset = CP850
         unix charset = UTF-8
         display charset = LOCALE
         workgroup = EXAMPLE
         realm = EXAMPLE
         netbios name = FSX
         netbios aliases =
         netbios scope =
         server string = Samba Server Version %v
         interfaces =
         bind interfaces only = No
         security = ADS
         auth methods =
         encrypt passwords = Yes
         client schannel = Auto
         server schannel = Auto
         allow trusted domains = Yes
         map to guest = Never
         null passwords = No
         obey pam restrictions = No
         password server = *
         smb passwd file = /var/lib/samba/private/smbpasswd
         private dir = /var/lib/samba/private
         passdb backend = tdbsam
         algorithmic rid base = 1000
         root directory =
         guest account = nobody
         enable privileges = Yes
         pam password change = No
         passwd program =
         passwd chat = *new*password* %n\n *new*password* %n\n *changed*
         passwd chat debug = No
         passwd chat timeout = 2
         check password script =
         username map =
         password level = 0
         username level = 0
         unix password sync = No
         restrict anonymous = 0
         lanman auth = No
         ntlm auth = Yes
         client NTLMv2 auth = Yes
         client lanman auth = No
         client plaintext auth = No
         client use spnego principal = No
         send spnego principal = No
         preload modules =
         dedicated keytab file =
         kerberos method = secrets and keytab
         map untrusted to domain = No
         log level = 2
         syslog = 1
         syslog only = No
         log file = /var/log/samba/log.%m
         max log size = 5000
         debug timestamp = Yes
         debug prefix timestamp = No
         debug hires timestamp = Yes
         debug pid = No
         debug uid = No
         debug class = No
         enable core files = Yes
         smb ports = 445 139
         large readwrite = Yes
         max protocol = NT1
         min protocol = CORE
         min receivefile size = 0
         read raw = Yes
         write raw = Yes
         disable netbios = No
         reset on zero vc = No
         log writeable files on exit = No
         acl compatibility = auto
         defer sharing violations = Yes
         nt pipe support = Yes
         nt status support = Yes
         announce version = 4.9
         announce as = NT
         max mux = 50
         max xmit = 16644
         name resolve order = lmhosts wins host bcast
         max ttl = 259200
         max wins ttl = 518400
         min wins ttl = 21600
         time server = No
         unix extensions = No
         use spnego = Yes
         client signing = auto
         server signing = No
         client use spnego = Yes
         client ldap sasl wrapping = plain
         enable asu support = No
         svcctl list =
         deadtime = 10
         getwd cache = Yes
         keepalive = 300
         lpq cache time = 30
         max smbd processes = 0
         paranoid server security = Yes
         max disk size = 0
         max open files = 16384
         socket options = TCP_NODELAY SO_KEEPALIVE
         use mmap = Yes
         hostname lookups = No
         name cache timeout = 660
         ctdbd socket =
         cluster addresses =
         clustering = No
         ctdb timeout = 0
         ctdb locktime warn threshold = 0
         smb2 max read = 65536
         smb2 max write = 65536
         smb2 max trans = 65536
         smb2 max credits = 8192
         load printers = Yes
         printcap cache time = 750
         printcap name =
         cups server =
         cups encrypt = No
         cups connection timeout = 30
         iprint server =
         disable spoolss = No
         addport command =
         enumports command =
         addprinter command =
         deleteprinter command =
         show add printer wizard = Yes
         os2 driver map =
         mangling method = hash2
         mangle prefix = 1
         max stat cache size = 256
         stat cache = Yes
         machine password timeout = 604800
         add user script =
         rename user script =
         delete user script =
         add group script =
         delete group script =
         add user to group script =
         delete user from group script =
         set primary group script =
         add machine script =
         shutdown script =
         abort shutdown script =
         username map script =
         username map cache time = 0
         logon script =
         logon path = \\%N\%U\profile
         logon drive =
         logon home = \\%N\%U
         domain logons = No
         init logon delayed hosts =
         init logon delay = 100
         os level = 20
         lm announce = Auto
         lm interval = 60
         preferred master = No
         local master = Yes
         domain master = Auto
         browse list = Yes
         enhanced browsing = Yes
         dns proxy = Yes
         wins proxy = No
         wins server =
         wins support = No
         wins hook =
         kernel oplocks = Yes
         lock spin time = 200
         oplock break wait time = 0
         ldap admin dn =
         ldap delete dn = No
         ldap group suffix =
         ldap idmap suffix =
         ldap machine suffix =
         ldap passwd sync = no
         ldap replication sleep = 1000
         ldap suffix =
         ldap ssl = start tls
         ldap ssl ads = No
         ldap deref = auto
         ldap follow referral = Auto
         ldap timeout = 15
         ldap connection timeout = 2
         ldap page size = 1024
         ldap user suffix =
         ldap debug level = 0
         ldap debug threshold = 10
         eventlog list =
         add share command =
         change share command =
         delete share command =
         preload =
         lock directory = /var/lib/samba
         state directory = /var/lib/samba
         cache directory = /var/lib/samba
         pid directory = /var/run
         utmp directory =
         wtmp directory =
         utmp = No
         default service =
         message command =
         get quota command =
         set quota command =
         remote announce =
         remote browse sync =
         socket address = 0.0.0.0
         nmbd bind explicit broadcast = Yes
         homedir map = auto.home
         afs username map =
         afs token lifetime = 604800
         log nt token command =
         time offset = 0
         NIS homedir = No
         registry shares = No
         usershare allow guests = No
         usershare max shares = 0
         usershare owner only = Yes
         usershare path = /var/lib/samba/usershares
         usershare prefix allow list =
         usershare prefix deny list =
         usershare template share =
         allow insecure wide links = No
         async smb echo handler = No
         multicast dns register = Yes
         panic action =
         perfcount module =
         host msdfs = Yes
         passdb expand explicit = No
         idmap backend = tdb
         idmap cache time = 604800
         idmap negative cache time = 120
         idmap uid =
         idmap gid =
         template homedir = /home/%D/%U
         template shell = /bin/false
         winbind separator = \
         winbind cache time = 300
         winbind reconnect delay = 30
         winbind max clients = 200
         winbind enum users = Yes
         winbind enum groups = Yes
         winbind use default domain = No
         winbind trusted domains only = No
         winbind nested groups = Yes
         winbind expand groups = 1
         winbind nss info = template
         winbind refresh tickets = No
         winbind offline logon = No
         winbind normalize names = No
         winbind rpc only = No
         create krb5 conf = Yes
         ncalrpc dir = /var/ncalrpc
         winbind max domain connections = 1
         idmap config EXAMPLE : range = 2000000-2999999
         idmap config EXAMPLE : backend = rid
         idmap config * : range = 10544-10554
         idmap config * : backend = tdb
         comment =
         path =
         username =
         invalid users =
         valid users =
         admin users =
         read list =
         write list =
         printer admin =
         force user =
         force group =
         read only = Yes
         acl check permissions = Yes
         acl group control = No
         acl map full control = Yes
         create mask = 0744
         force create mode = 00
         security mask = 0777
         force security mode = 00
         directory mask = 0755
         force directory mode = 00
         directory security mask = 0777
         force directory security mode = 00
         force unknown acl user = No
         inherit permissions = No
         inherit acls = No
         inherit owner = No
         guest only = No
         administrative share = No
         guest ok = No
         only user = No
         hosts allow =
         hosts deny =
         allocation roundup size = 1048576
         aio read size = 0
         aio write size = 0
         aio write behind =
         ea support = No
         nt acl support = Yes
         profile acls = No
         map acl inherit = Yes
         afs share = No
         smb encrypt = auto
         block size = 1024
         change notify = Yes
         directory name cache size = 100
         kernel change notify = Yes
         max connections = 0
         min print space = 0
         strict allocate = No
         strict sync = No
         sync always = No
         use sendfile = No
         write cache size = 0
         max reported print jobs = 0
         max print jobs = 1000
         printable = No
         print notify backchannel = Yes
         print ok = No
         printing = cups
         cups options = raw
         print command =
         lpq command = %p
         lprm command =
         lppause command =
         lpresume command =
         queuepause command =
         queueresume command =
         printer name =
         use client driver = No
         default devmode = Yes
         force printername = No
         printjob username = %U
         default case = lower
         case sensitive = Auto
         preserve case = Yes
         short preserve case = Yes
         mangling char = ~
         hide dot files = Yes
         hide special files = No
         hide unreadable = No
         hide unwriteable files = No
         delete veto files = Yes
         veto files = /____archive____/Thumbs.db/
         hide files =
         veto oplock files =
         map archive = Yes
         map hidden = No
         map system = No
         map readonly = yes
         mangled names = Yes
         store dos attributes = Yes
         dmapi support = No
         browseable = Yes
         access based share enum = No
         blocking locks = Yes
         csc policy = manual
         fake oplocks = No
         locking = Yes
         oplocks = Yes
         level2 oplocks = Yes
         oplock contention limit = 2
         posix locking = Yes
         strict locking = Auto
         share modes = Yes
         dfree cache time = 0
         dfree command =
         copy =
         preexec =
         preexec close = No
         postexec =
         root preexec =
         root preexec close = No
         root postexec =
         available = Yes
         volume =
         fstype = NTFS
         set directory = No
         wide links = No
         follow symlinks = Yes
         dont descend =
         magic script =
         magic output =
         delete readonly = No
         dos filemode = No
         dos filetimes = Yes
         dos filetime resolution = No
         fake directory create times = No
         vfs objects = acl_xattr
         msdfs root = No
         msdfs proxy =

[DATI]
         comment = DATI
         path = /opt/fileserver/shares/DATI
         read only = No

[EDP]
         comment = EDP
         path = /opt/fileserver/shares/EDP
         read only = No

[UTILITY]
         comment = UTILITY
         path = /opt/fileserver/shares/UTILITY
         read only = No

[ARCHIVE]
         comment = ARCHIVE
         path = /opt/fileserver/archive/kvm-white.target1
         valid users = "@EXAMPLE\domain admins"


-- 
Danti Gionatan
Supporto Tecnico
Assyoma S.r.l. - www.assyoma.it
email: g.danti at assyoma.it - info at assyoma.it
GPG public key ID: FF5F32A8



More information about the samba mailing list