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 不允許操作
設定步驟
- vim /etc/sysctl.conf # 加入下述
kernel.dmesg_restrict = 0 - 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.