Linux Kernel 4.8 dmesg 讀取操作不被允許的解法

Debian stretch 目前的 Linux kernel 是 4.8 版,user 直接執行 dmesg 已經不被允許,會有下述訊息:

dmesg: read kernel buffer failed: 此項操作並不被允許

需要 root 或使用 sudo 才能讀取,例如:

  • sudo dmesg
  • sudo dmesg -T
  • 註:話說 /var/log/dmesg 一般 user 也不能讀取就是了

想要讓一般 user 可以正常執行 dmesg,可於 sysctl 設定下述參數即可:

  • kernel.dmesg_restrict = 0

註:0 是一般 user 可以直接使用,1 是一般 user 不允許操作

設定步驟

  1. vim /etc/sysctl.conf # 加入下述
    kernel.dmesg_restrict = 0
  2. sudo sysctl -p

詳見:Kernel.txt,下述摘錄自此篇:

dmesg_restrict:

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.


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Unix 並標籤為 , , , 。將永久鏈結加入書籤。

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料