diff --git a/docs-xml/smbdotconf/misc/dosfilemode.xml b/docs-xml/smbdotconf/misc/dosfilemode.xml index e67ccd9..cf53192 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 0993340..2dc0c83 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 3d06e52..db3881e 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 11ca890..962d1b7 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 9a0f834..c62deb5 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; -}