userns: Allow setting a userns mapping to your current uid.
Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
7fa294c899
commit
37657da3c5
|
@ -709,6 +709,21 @@ ssize_t proc_projid_map_write(struct file *file, const char __user *buf, size_t
|
|||
static bool new_idmap_permitted(struct user_namespace *ns, int cap_setid,
|
||||
struct uid_gid_map *new_map)
|
||||
{
|
||||
/* Allow mapping to your own filesystem ids */
|
||||
if ((new_map->nr_extents == 1) && (new_map->extent[0].count == 1)) {
|
||||
u32 id = new_map->extent[0].lower_first;
|
||||
if (cap_setid == CAP_SETUID) {
|
||||
kuid_t uid = make_kuid(ns->parent, id);
|
||||
if (uid_eq(uid, current_fsuid()))
|
||||
return true;
|
||||
}
|
||||
else if (cap_setid == CAP_SETGID) {
|
||||
kgid_t gid = make_kgid(ns->parent, id);
|
||||
if (gid_eq(gid, current_fsgid()))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/* Allow anyone to set a mapping that doesn't require privilege */
|
||||
if (!cap_valid(cap_setid))
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue