aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorSerge E. Hallyn <serge@hallyn.com>2010-11-25 12:11:32 -0500
committerJames Morris <jmorris@namei.org>2010-11-28 16:35:12 -0500
commitce6ada35bdf710d16582cc4869c26722547e6f11 (patch)
treec2b5fd46c883f4b7285b191bac55940022662b43 /kernel
parent1d6d75684d869406e5bb2ac5d3ed9454f52d0cab (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')
-rw-r--r--kernel/printk.c8
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);