如果journalctl无需root即可访问相同的信息,为什么dmesg需要sudo?

如果journalctl无需root即可访问相同的信息,为什么dmesg需要sudo?

如今,至少在 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访问确实仅限于以下组的成员:admsystemd-journalwheel根据,man journalctlFedora 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而系统日志可能包含可能允许未经授权访问系统的信息。

相关内容