我前段时间就注意到了这个差异,但直到现在,我才懒得去问,这是为什么?
在 Linux Mint 18(基于 Ubuntu)上,我可以在dmesg
不使用sudo
.
在 GNU/Linux Debian 9 上,我必须使用 sudo 才能使用例如dmesg
.
我想知道,这种行为的编码在哪里?并且可以改变吗?
答案1
这是由dmesg_restrict
sysctl
条目控制的,记录在内核文档。它的默认值由内核配置值决定CONFIG_SECURITY_DMESG_RESTRICT
,该值通常在现代发行版中启用。
您可以通过运行查看当前值
/sbin/sysctl kernel.dmesg_restrict
root
并使用 (as )更改其值
sysctl -w kernel.dmesg_restrict=1
(启用限制)或
sysctl -w kernel.dmesg_restrict=0
(禁用它并恢复旧的行为)。
要使此更改永久生效(在启动时自动应用),请将其写入/etc/sysctl.conf
以下配置文件/etc/sysctl.d
:
echo kernel.dmesg_restrict=0 | sudo tee -a /etc/sysctl.d/99-dmesg.conf
答案2
这是较新内核的默认内核配置:CONFIG_SECURITY_DMESG_RESTRICT=y
答案3
正如其他人回答的那样,您可以使用/sbin/sysctl
在运行时检查和更改值。
但是,为了使这些更改在重新启动后保持不变,您应该将它们添加到/etc/sysctl.conf