From a8769e667514f83a45ee3e825d21a351987d0210 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 11 Nov 2009 18:35:18 -0800 Subject: Second part of bugfix for 6865 - acl_xattr module: Has dependency that inherit acls = yes or xattrs are removed. We also need dos filemode = true set as well. Jeremy. --- docs-xml/smbdotconf/misc/dosfilemode.xml | 8 +++++++- source3/include/proto.h | 1 - source3/modules/vfs_acl_tdb.c | 6 ++++-- source3/modules/vfs_acl_xattr.c | 8 ++++++-- source3/param/loadparm.c | 10 ---------- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/docs-xml/smbdotconf/misc/dosfilemode.xml b/docs-xml/smbdotconf/misc/dosfilemode.xml index e67ccd935a..cf53192733 100644 --- a/docs-xml/smbdotconf/misc/dosfilemode.xml +++ b/docs-xml/smbdotconf/misc/dosfilemode.xml @@ -12,7 +12,13 @@ (including ACL) on it. Note that a user belonging to the group owning the file will not be allowed to change permissions if the group is only granted read access. Ownership of the - file/directory may also be changed. + file/directory may also be changed. + + Note that using the VFS modules acl_xattr or acl_tdb which store native + Windows as meta-data will automatically turn this option on for any + share for which they are loaded, as they require this option to emulate + Windows ACLs correctly. + no diff --git a/source3/include/proto.h b/source3/include/proto.h index 09933405ee..2dc0c83e02 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -4374,7 +4374,6 @@ void lp_set_posix_default_cifsx_readwrite_locktype(enum brl_flavour val); int lp_min_receive_file_size(void); char* lp_perfcount_module(void); void lp_set_passdb_backend(const char *backend); -bool set_inherit_acls(int i); /* The following definitions come from param/util.c */ diff --git a/source3/modules/vfs_acl_tdb.c b/source3/modules/vfs_acl_tdb.c index 3d06e520e8..db3881e1e7 100644 --- a/source3/modules/vfs_acl_tdb.c +++ b/source3/modules/vfs_acl_tdb.c @@ -384,9 +384,11 @@ static int connect_acl_tdb(struct vfs_handle_struct *handle, /* Ensure we have "inherit acls = yes" if we're * using this module. */ - DEBUG(2,("connect_acl_tdb: setting 'inherit acls = true' for service %s\n", + DEBUG(2,("connect_acl_tdb: setting 'inherit acls = true' " + "and 'dos filemode = true' for service %s\n", service )); - set_inherit_acls(SNUM(handle->conn)); + lp_do_parameter(SNUM(handle->conn), "inherit acls", "true"); + lp_do_parameter(SNUM(handle->conn), "dos filemode", "true"); return 0; } diff --git a/source3/modules/vfs_acl_xattr.c b/source3/modules/vfs_acl_xattr.c index 11ca8902c0..962d1b7b09 100644 --- a/source3/modules/vfs_acl_xattr.c +++ b/source3/modules/vfs_acl_xattr.c @@ -214,9 +214,13 @@ static int connect_acl_xattr(struct vfs_handle_struct *handle, { /* Ensure we have "inherit acls = yes" if we're * using this module. */ - DEBUG(2,("connect_acl_xattr: setting 'inherit acls = true' for service %s\n", + DEBUG(2,("connect_acl_xattr: setting 'inherit acls = true' " + "and 'dos filemode = true' for service %s\n", service )); - set_inherit_acls(SNUM(handle->conn)); + + lp_do_parameter(SNUM(handle->conn), "inherit acls", "true"); + lp_do_parameter(SNUM(handle->conn), "dos filemode", "true"); + return 0; } diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 9a0f834f99..c62deb5eda 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -9843,13 +9843,3 @@ void lp_set_passdb_backend(const char *backend) { string_set(&Globals.szPassdbBackend, backend); } - -bool set_inherit_acls(int i) -{ - if (!LP_SNUM_OK(i)) { - return false; - } - ServicePtrs[(i)]->bInheritACLS = true; - - return true; -} -- cgit