dmesg:读取内核缓冲区失败:权限被拒绝


17

从最近开始,Debian更改了默认行为dmesg,所以我不能仅从本地用户使用它。

% dmesg
dmesg: read kernel buffer failed: Operation not permitted

同样适用于:

% cat /dev/kmsg                      
cat: /dev/kmsg: Operation not permitted

在错误跟踪器中担任主角可导致:

我如何将此行为改回到上一个行为,在此之前,本地用户被允许使用dmesg。我找不到适合的特定群组(例如sudoers或类似的东西)。

Answers:


22

因此,查看错误报告的最后一条消息实际上并不重要:

来自上述内核的变更日志的一部分:* security,printk:启用SECURITY_DMESG_RESTRICT,默认情况下阻止非root用户读取内核日志(sysctl:kernel.dmesg_restrict)

因此,解决方案是只运行一次:

% sudo sysctl kernel.dmesg_restrict=0
kernel.dmesg_restrict = 0

然后,您的本地用户可以dmesg再次开始使用。这适用于任何用户,而不是我最初假定的组。

一切都回到了我想要的:

% dmesg|wc
   1307   11745   93652

% cat /dev/kmsg|head|wc
     10      82     857

为了使其在重新启动后仍然存在,只需将其另存为conf文件即可:

$ cat /etc/sysctl.d/10-local.conf 
kernel.dmesg_restrict = 0

您能够以cat /dev/kmesg普通用户身份执行以下命令吗?
direprobs

应该/dev/kmsg在第一条评论中是错字。
direprobs

通过添加kernel.dmesg_restrict = 0/etc/sysctl.conf
Knobee,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.