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
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