Linux

dmesg:讀取核心緩衝區失敗:權限被拒絕

  • October 26, 2017

自從最近 Debian 改變了預設行為dmesg,我不能簡單地從我的本地使用者使用它。

% dmesg
dmesg: read kernel buffer failed: Operation not permitted

同樣適用於:

% cat /dev/kmsg                      
cat: /dev/kmsg: Operation not permitted

以錯誤跟踪器為主角,這導致:

如何將此行為更改回以前的行為,允許本地使用者使用 dmesg。我找不到它的特定組(例如 sudoers 或類似的東西)。

所以它實際上是微不足道的,查看錯誤報告中的最後一條消息:

來自上述核心的部分更新日誌: * security,printk: Enable SECURITY_DMESG_RESTRICT,預設防止非root使用者讀取核心日誌(sysctl: kernel.dmesg_restrict)

所以解決方案只是執行一次:

% sudo sysctl kernel.dmesg_restrict=0
kernel.dmesg_restrict = 0

然後您的本地使用者可以dmesg再次開始使用。這適用於任何使用者,而不是我最初假設的組。

一切都回到了我想要的狀態:

% dmesg|wc
  1307   11745   93652

% cat /dev/kmsg|head|wc
    10      82     857

為了讓它在重新啟動後仍然存在,只需將其保存為 conf 文件:

$ cat /etc/sysctl.d/10-local.conf 
kernel.dmesg_restrict = 0

引用自:https://unix.stackexchange.com/questions/390184