mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
Revert parts of 938cfeb0f2
When read and writing the UID/GID, we always want the value relative to the root user namespace, the kernel will take care of remapping this to the user namespace for us. Calling from_kuid(user_ns, uid) with a unmapped uid will return -1 as that uid is outside of the scope of that namespace, and will result in the files inside the namespace all being owned by 'nobody' and not being allowed to call chmod or chown on them. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Allan Jude <allan@klarasystems.com> Closes #12263
This commit is contained in:
parent
fc5200aa9b
commit
a1aa8f14c8
@ -296,11 +296,7 @@ static inline struct dentry *file_dentry(const struct file *f)
|
|||||||
|
|
||||||
static inline uid_t zfs_uid_read_impl(struct inode *ip)
|
static inline uid_t zfs_uid_read_impl(struct inode *ip)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SUPER_USER_NS
|
|
||||||
return (from_kuid(ip->i_sb->s_user_ns, ip->i_uid));
|
|
||||||
#else
|
|
||||||
return (from_kuid(kcred->user_ns, ip->i_uid));
|
return (from_kuid(kcred->user_ns, ip->i_uid));
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uid_t zfs_uid_read(struct inode *ip)
|
static inline uid_t zfs_uid_read(struct inode *ip)
|
||||||
@ -310,11 +306,7 @@ static inline uid_t zfs_uid_read(struct inode *ip)
|
|||||||
|
|
||||||
static inline gid_t zfs_gid_read_impl(struct inode *ip)
|
static inline gid_t zfs_gid_read_impl(struct inode *ip)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SUPER_USER_NS
|
|
||||||
return (from_kgid(ip->i_sb->s_user_ns, ip->i_gid));
|
|
||||||
#else
|
|
||||||
return (from_kgid(kcred->user_ns, ip->i_gid));
|
return (from_kgid(kcred->user_ns, ip->i_gid));
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline gid_t zfs_gid_read(struct inode *ip)
|
static inline gid_t zfs_gid_read(struct inode *ip)
|
||||||
@ -324,20 +316,12 @@ static inline gid_t zfs_gid_read(struct inode *ip)
|
|||||||
|
|
||||||
static inline void zfs_uid_write(struct inode *ip, uid_t uid)
|
static inline void zfs_uid_write(struct inode *ip, uid_t uid)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SUPER_USER_NS
|
|
||||||
ip->i_uid = make_kuid(ip->i_sb->s_user_ns, uid);
|
|
||||||
#else
|
|
||||||
ip->i_uid = make_kuid(kcred->user_ns, uid);
|
ip->i_uid = make_kuid(kcred->user_ns, uid);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void zfs_gid_write(struct inode *ip, gid_t gid)
|
static inline void zfs_gid_write(struct inode *ip, gid_t gid)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SUPER_USER_NS
|
|
||||||
ip->i_gid = make_kgid(ip->i_sb->s_user_ns, gid);
|
|
||||||
#else
|
|
||||||
ip->i_gid = make_kgid(kcred->user_ns, gid);
|
ip->i_gid = make_kgid(kcred->user_ns, gid);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user