capabilities: allow nice if we are privileged
We allow task A to change B's nice level if it has a supserset of B's privileges, or of it has CAP_SYS_NICE. Also allow it if A has CAP_SYS_NICE with respect to B - meaning it is root in the same namespace, or it created B's namespace. Signed-off-by: Serge Hallyn <serge.hallyn@canonical.com> Reviewed-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
parent
6e556ce209
commit
f54fb863c6
1 changed files with 4 additions and 4 deletions
|
@ -768,16 +768,16 @@ int cap_task_fix_setuid(struct cred *new, const struct cred *old, int flags)
|
|||
*/
|
||||
static int cap_safe_nice(struct task_struct *p)
|
||||
{
|
||||
int is_subset;
|
||||
int is_subset, ret = 0;
|
||||
|
||||
rcu_read_lock();
|
||||
is_subset = cap_issubset(__task_cred(p)->cap_permitted,
|
||||
current_cred()->cap_permitted);
|
||||
if (!is_subset && !ns_capable(__task_cred(p)->user_ns, CAP_SYS_NICE))
|
||||
ret = -EPERM;
|
||||
rcu_read_unlock();
|
||||
|
||||
if (!is_subset && !capable(CAP_SYS_NICE))
|
||||
return -EPERM;
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue