summaryrefslogtreecommitdiff
path: root/source3/smbd/oplock_linux.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2009-01-22 10:57:10 -0800
committerJeremy Allison <jra@samba.org>2009-01-22 10:57:10 -0800
commit2d81c9e957a21191c5b4e2b28a4599052c1357a1 (patch)
tree0157cf898b106106f0d26a072d0e0358622cfea7 /source3/smbd/oplock_linux.c
parent3942e53357146c9c5419313efc4c91b85f7e508b (diff)
downloadsamba-2d81c9e957a21191c5b4e2b28a4599052c1357a1.tar.gz
samba-2d81c9e957a21191c5b4e2b28a4599052c1357a1.tar.bz2
samba-2d81c9e957a21191c5b4e2b28a4599052c1357a1.zip
Another attempt to fix bug #4308 - Excel save operation corrupts file ACLs.
Simo is completely correct. We should be doing the chown *first*, and fail the ACL set if this fails. The long standing assumption I made when writing the initial POSIX ACL code was that Windows didn't control who could chown a file in the same was as POSIX. In POSIX only root can do this whereas I wasn't sure who could do this in Windows at the time (I didn't understand the privilege model). So the assumption was that setting the ACL was more important (early tests showed many failed ACL set's due to inability to chown). But now we have privileges in smbd, and we must always fail an ACL set when we can't chown first. The key that Simo noticed is that the CREATOR_OWNER bits in the ACL incoming are relative to the *new* owner, not the old one. This is why the old user owner disappears on ACL set - their access was set via the USER_OBJ in the creator POSIX ACL and when the ownership changes they lose their access. Patch is simple - just ensure we do the chown first before evaluating the incoming ACL re-read the owners. We already have code to do this it just wasn't rigorously being applied. Jeremy.
Diffstat (limited to 'source3/smbd/oplock_linux.c')
0 files changed, 0 insertions, 0 deletions