diff options
author | Serge E. Hallyn <serge@hallyn.com> | 2010-11-25 12:11:32 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2010-11-28 16:35:12 -0500 |
commit | ce6ada35bdf710d16582cc4869c26722547e6f11 (patch) | |
tree | c2b5fd46c883f4b7285b191bac55940022662b43 /kernel/printk.c | |
parent | 1d6d75684d869406e5bb2ac5d3ed9454f52d0cab (diff) |
security: Define CAP_SYSLOG
Privileged syslog operations currently require CAP_SYS_ADMIN. Split
this off into a new CAP_SYSLOG privilege which we can sanely take away
from a container through the capability bounding set.
With this patch, an lxc container can be prevented from messing with
the host's syslog (i.e. dmesg -c).
Changelog: mar 12 2010: add selinux capability2:cap_syslog perm
Changelog: nov 22 2010:
. port to new kernel
. add a WARN_ONCE if userspace isn't using CAP_SYSLOG
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Andrew G. Morgan <morgan@kernel.org>
Acked-By: Kees Cook <kees.cook@canonical.com>
Cc: James Morris <jmorris@namei.org>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Stephen Smalley <sds@tycho.nsa.gov>
Cc: "Christopher J. PeBenito" <cpebenito@tresys.com>
Cc: Eric Paris <eparis@parisplace.org>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'kernel/printk.c')
-rw-r--r-- | kernel/printk.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/printk.c b/kernel/printk.c index 9a2264fc42ca..0712380737b3 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
@@ -283,8 +283,14 @@ int do_syslog(int type, char __user *buf, int len, bool from_file) | |||
283 | return -EPERM; | 283 | return -EPERM; |
284 | if ((type != SYSLOG_ACTION_READ_ALL && | 284 | if ((type != SYSLOG_ACTION_READ_ALL && |
285 | type != SYSLOG_ACTION_SIZE_BUFFER) && | 285 | type != SYSLOG_ACTION_SIZE_BUFFER) && |
286 | !capable(CAP_SYS_ADMIN)) | 286 | !capable(CAP_SYSLOG)) { |
287 | /* remove after 2.6.38 */ | ||
288 | if (capable(CAP_SYS_ADMIN)) | ||
289 | WARN_ONCE(1, "Attempt to access syslog with " | ||
290 | "CAP_SYS_ADMIN but no CAP_SYSLOG " | ||
291 | "(deprecated and denied).\n"); | ||
287 | return -EPERM; | 292 | return -EPERM; |
293 | } | ||
288 | } | 294 | } |
289 | 295 | ||
290 | error = security_syslog(type); | 296 | error = security_syslog(type); |