由于最近 Debian 更改了默认行为dmesg
,我无法仅从本地用户使用它。
% dmesg
dmesg: read kernel buffer failed: Operation not permitted
同样适用于:
% cat /dev/kmsg
cat: /dev/kmsg: Operation not permitted
在错误跟踪器中担任主角,这会导致:
如何将此行为更改回之前的行为,即允许本地用户使用 dmesg。我找不到它的特定组(例如 sudoers 或类似的东西)。
答案1
所以这实际上是微不足道的,看看错误报告中的最后一条消息:
上述内核的部分变更日志:
- 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文件:
$ echo kernel.dmesg_restrict = 0 | sudo tee -a /etc/sysctl.d/10-local.conf >/dev/null
$ cat /etc/sysctl.d/10-local.conf
kernel.dmesg_restrict = 0
如果您使用的是 Ubuntu,则对于 20.10 版及更高版本,已经有一行可以在/etc/sysctl.d/10-kernel-hardening.conf
.更改文件后,为了使更改生效,用户需要重新启动或运行sudo service procps restart
.
答案2
这对我来说是这样的。
chown root `which dmesg`
chmod u+s `which dmesg`