dmesg能够输出kernel ring buffer中的内容,这些内容中可能会包含一些敏感信息。
根据 kernel docs 中的说明:
This toggle indicates whether unprivileged users are prevented from using dmesg(8) to view messages from the kernel’s log buffer. When dmesg_restrict is set to (0) there are no restrictions. When dmesg_restrict is set set to (1), users must have CAP_SYSLOG to use dmesg(8). The kernel config option CONFIG_SECURITY_DMESG_RESTRICT sets the default value of dmesg_restrict.
我们可以通过设置内核参数 dmesg_restrict
为 1
的方式来禁止普通用户查看demsg信息
sudo sysctl -w kernel.dmesg_restrict=1
我们来看一下现在 dmesg_restrict
的值是什么
sysctl kernel.dmesg_restrict
kernel.dmesg_restrict = 1
现在再来用普通用户执行demsg:
[lujun9972@T520 wikit.docker]$ dmesg dmesg: 读取内核缓冲区失败: 不允许的操作
会发现提示无法读取内核缓冲区
要让该设置永久生效,则需要修改 /etc/sysctl.conf
文件
sudo echo 'kernel.dmesg_restrict=1' >> /etc/sysctl.conf