[Samba] Strange problem with MS Office while saving

Gionatan Danti g.danti at assyoma.it
Fri Oct 30 08:42:09 UTC 2015


Hi all,
anyone with some ideas?

Thanks.

On 28/10/15 19:18, Gionatan Danti wrote:
> 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