diff options
author | Serge E. Hallyn <serue@us.ibm.com> | 2008-12-03 13:17:33 -0600 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2008-12-08 09:16:27 +1100 |
commit | 7657d90497f98426af17f0ac633a9b335bb7a8fb (patch) | |
tree | 6344dc4715a85383f6492a4102ae406c6b86d79d /kernel/fork.c | |
parent | c37bbb0fdcc01610fd55604eb6927210a1d20044 (diff) | |
download | lwn-7657d90497f98426af17f0ac633a9b335bb7a8fb.tar.gz lwn-7657d90497f98426af17f0ac633a9b335bb7a8fb.zip |
user namespaces: require cap_set{ug}id for CLONE_NEWUSER
While ideally CLONE_NEWUSER will eventually require no
privilege, the required permission checks are currently
not there. As a result, CLONE_NEWUSER has the same effect
as a setuid(0)+setgroups(1,"0"). While we already require
CAP_SYS_ADMIN, requiring CAP_SETUID and CAP_SETGID seems
appropriate.
Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 1dd89451fae4..e3a85b33107e 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1344,7 +1344,8 @@ long do_fork(unsigned long clone_flags, /* hopefully this check will go away when userns support is * complete */ - if (!capable(CAP_SYS_ADMIN)) + if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SETUID) || + !capable(CAP_SETGID)) return -EPERM; } |