capabilites: allow the application of capability limits to usermode helpers
authorEric Paris <eparis@redhat.com>
Fri, 1 Apr 2011 21:07:50 +0000 (17:07 -0400)
committerJames Morris <jmorris@namei.org>
Mon, 4 Apr 2011 00:31:04 +0000 (10:31 +1000)
commit17f60a7da150fdd0cfb9756f86a262daa72c835f
tree1c5ece75d66bed0766de861cde6eb18ee7ea4cf2
parentcfc64fd91fabed099a4c3df58559f4b7efe9bcce
capabilites: allow the application of capability limits to usermode helpers

There is no way to limit the capabilities of usermodehelpers. This problem
reared its head recently when someone complained that any user with
cap_net_admin was able to load arbitrary kernel modules, even though the user
didn't have cap_sys_module.  The reason is because the actual load is done by
a usermode helper and those always have the full cap set.  This patch addes new
sysctls which allow us to bound the permissions of usermode helpers.

/proc/sys/kernel/usermodehelper/bset
/proc/sys/kernel/usermodehelper/inheritable

You must have CAP_SYS_MODULE  and CAP_SETPCAP to change these (changes are
&= ONLY).  When the kernel launches a usermodehelper it will do so with these
as the bset and pI.

-v2: make globals static
create spinlock to protect globals

-v3: require both CAP_SETPCAP and CAP_SYS_MODULE
-v4: fix the typo s/CAP_SET_PCAP/CAP_SETPCAP/ because I didn't commit
Signed-off-by: Eric Paris <eparis@redhat.com>
No-objection-from: Serge E. Hallyn <serge.hallyn@canonical.com>
Acked-by: David Howells <dhowells@redhat.com>
Acked-by: Serge E. Hallyn <serge.hallyn@canonical.com>
Acked-by: Andrew G. Morgan <morgan@kernel.org>
Signed-off-by: James Morris <jmorris@namei.org>
include/linux/kmod.h
kernel/kmod.c
kernel/sysctl.c