mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-20 00:26:28 +00:00
silently ignore ownership changes unless unix extensions are enabled or we're faking uid changes
CIFS currently allows you to change the ownership of a file, but unless unix extensions are enabled this change is not passed off to the server. Have CIFS silently ignore ownership changes that can't be persistently stored on the server unless the "setuids" option is explicitly specified. We could return an error here (-EOPNOTSUPP or something), but this is how most disk-based windows filesystems on behave on Linux (e.g. VFAT, NTFS, etc). With cifsacl support and proper Windows to Unix idmapping support, we may be able to do this more properly in the future. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
4e94a105ed
commit
4ca691a892
@ -1546,13 +1546,26 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs)
|
||||
} else
|
||||
goto cifs_setattr_exit;
|
||||
}
|
||||
if (attrs->ia_valid & ATTR_UID) {
|
||||
cFYI(1, ("UID changed to %d", attrs->ia_uid));
|
||||
uid = attrs->ia_uid;
|
||||
}
|
||||
if (attrs->ia_valid & ATTR_GID) {
|
||||
cFYI(1, ("GID changed to %d", attrs->ia_gid));
|
||||
gid = attrs->ia_gid;
|
||||
|
||||
/*
|
||||
* Without unix extensions we can't send ownership changes to the
|
||||
* server, so silently ignore them. This is consistent with how
|
||||
* local DOS/Windows filesystems behave (VFAT, NTFS, etc). With
|
||||
* CIFSACL support + proper Windows to Unix idmapping, we may be
|
||||
* able to support this in the future.
|
||||
*/
|
||||
if (!pTcon->unix_ext &&
|
||||
!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID)) {
|
||||
attrs->ia_valid &= ~(ATTR_UID | ATTR_GID);
|
||||
} else {
|
||||
if (attrs->ia_valid & ATTR_UID) {
|
||||
cFYI(1, ("UID changed to %d", attrs->ia_uid));
|
||||
uid = attrs->ia_uid;
|
||||
}
|
||||
if (attrs->ia_valid & ATTR_GID) {
|
||||
cFYI(1, ("GID changed to %d", attrs->ia_gid));
|
||||
gid = attrs->ia_gid;
|
||||
}
|
||||
}
|
||||
|
||||
time_buf.Attributes = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user