• Serge E. Hallyn's avatar
    file capabilities: don't prevent signaling setuid root programs · 8ec2328f
    Serge E. Hallyn authored
    An unprivileged process must be able to kill a setuid root program started
    by the same user.  This is legacy behavior needed for instance for xinit to
    kill X when the window manager exits.
    
    When an unprivileged user runs a setuid root program in !SECURE_NOROOT
    mode, fP, fI, and fE are set full on, so pP' and pE' are full on.  Then
    cap_task_kill() prevents the user from signaling the setuid root task.
    This is a change in behavior compared to when
    !CONFIG_SECURITY_FILE_CAPABILITIES.
    
    This patch introduces a special check into cap_task_kill() just to check
    whether a non-root user is signaling a setuid root program started by the
    same user.  If so, then signal is allowed.
    Signed-off-by: default avatarSerge E. Hallyn <serue@us.ibm.com>
    Cc: Andrew Morgan <morgan@kernel.org>
    Cc: Stephen Smalley <sds@epoch.ncsc.mil>
    Cc: Chris Wright <chrisw@sous-sol.org>
    Cc: James Morris <jmorris@namei.org>
    Cc: Casey Schaufler <casey@schaufler-ca.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    8ec2328f
commoncap.c 14.9 KB