dmesg -c:读取内核缓冲区失败,不允许操作

dmesg -c:读取内核缓冲区失败,不允许操作

我正在使用内核模块,因此我需要处理 dmesg 输出。但是,我无法命令dmesg-c。我可以 dmesg,但无法清除缓冲区。我搜索了诸如

sudo sysctl kernel.dmesg_restrict =0

但他们并没有解决问题。为什么我无法清除缓冲区?

答案1

这在中进行了解释man 2 syslog:除“read all”和“size”之外的所有 syslog 命令仅对 root 可用。dmesg_restrict仅控制对“全部读取”和“大小”的访问;将其设置为 1 会将它们限制为 root,将其设置为 0 将使它们可供非 root 进程使用。

dmesg -c在所有情况下都需要 root(严格来说,CAP_SYS_ADMIN或):CAP_SYSLOG

sudo dmesg -c

答案2

就跟sudo dmesg -c伙计们一起去吧。我已经知道它有效,但我想知道为什么它在没有sudo.然而,没有令人满意的答案,那么我选择选择更安全的答案。

相关内容