如今,至少在 Arch Linux 中(其他发行版可能也是如此?1),dmesg
需要sudo
,否则不起作用:
$ dmesg
dmesg: read kernel buffer failed: Operation not permitted
另一方面,journalctl
(from systemd
) 不需要sudo
。
这感觉很奇怪,因为journalctl
可以访问 的许多相同信息(如果不是全部)dmesg
。
有谁知道为什么一个受到限制而另一个不受限制?我的安装非常普通,并且我没有对sysctl
( /etc/sysctl.d/
) 等进行任何自定义更改。
我在 SE 之外发现了类似的问题2但没有任何回复。
答案1
journalctl
访问确实仅限于以下组的成员:adm
、systemd-journal
、wheel
根据,man journalctl
Fedora 33 确实如此:
Hint: You are currently not seeing messages from other users and the system.
Users in groups 'adm', 'systemd-journal', 'wheel' can see all messages.
Pass -q to turn off this notice.
至于dmesg
它的访问权限是由sysctl变量控制的,kernel.dmesg_restrict
至少在Fedora中该变量被设置为0,这意味着任何本地用户都可以读取内核日志。
IMO,我认为没有理由限制访问,dmesg
而系统日志可能包含可能允许未经授权访问系统的信息。