summaryrefslogtreecommitdiffstats
path: root/kernel/printk
diff options
context:
space:
mode:
authorJingzi Meng <mengjingzi@iie.ac.cn>2024-01-05 14:20:07 +0800
committerKees Cook <keescook@chromium.org>2024-02-01 10:04:58 -0800
commit09ce61e27db83180993e8b1a7f511af62374383c (patch)
tree9a1ebc61a49f7ce5876c33b4561c00bc22522a1b /kernel/printk
parent38b9baf19469a34bc487a549bcd9a4f8433d473e (diff)
downloadlinux-09ce61e27db83180993e8b1a7f511af62374383c.tar.gz
linux-09ce61e27db83180993e8b1a7f511af62374383c.tar.bz2
linux-09ce61e27db83180993e8b1a7f511af62374383c.zip
cap_syslog: remove CAP_SYS_ADMIN when dmesg_restrict
CAP_SYSLOG was separated from CAP_SYS_ADMIN and introduced in Linux 2.6.37 (2010-11). For a long time, certain syslog actions required CAP_SYS_ADMIN or CAP_SYSLOG. Maybe it’s time to officially remove CAP_SYS_ADMIN for more fine-grained control. CAP_SYS_ADMIN was once removed but added back for backwards compatibility reasons. In commit 38ef4c2e437d ("syslog: check cap_syslog when dmesg_restrict") (2010-12), CAP_SYS_ADMIN was no longer needed. And in commit ee24aebffb75 ("cap_syslog: accept CAP_SYS_ADMIN for now") (2011-02), it was accepted again. Since then, CAP_SYS_ADMIN has been preserved. Now that almost 13 years have passed, the legacy application may have had enough time to be updated. Signed-off-by: Jingzi Meng <mengjingzi@iie.ac.cn> Reviewed-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20240105062007.26965-1-mengjingzi@iie.ac.cn Signed-off-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'kernel/printk')
-rw-r--r--kernel/printk/printk.c11
1 files changed, 0 insertions, 11 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index f2444b581e16..1c6e7dfc4ba7 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -598,17 +598,6 @@ static int check_syslog_permissions(int type, int source)
if (syslog_action_restricted(type)) {
if (capable(CAP_SYSLOG))
goto ok;
- /*
- * For historical reasons, accept CAP_SYS_ADMIN too, with
- * a warning.
- */
- if (capable(CAP_SYS_ADMIN)) {
- pr_warn_once("%s (%d): Attempt to access syslog with "
- "CAP_SYS_ADMIN but no CAP_SYSLOG "
- "(deprecated).\n",
- current->comm, task_pid_nr(current));
- goto ok;
- }
return -EPERM;
}
ok: