※この方法だと全ユーザで dmesg
が実行できてしまうので sudo を使ってグループを制限する次の方法のほうがいいかもしれない.
Debian buster arm64 環境を作りました( Raspberry Pi 3 Model B の USB起動で Debian buster arm64 を動かす – matoken’s meme )が,dmesg でエラーとなります.sudo dmesg
は動く.
$ dmesg
dmesg: read kernel buffer failed: Operation not permitted
$ LC_MESSAGES=ja_JP.UTF-8 dmesg
dmesg: read kernel buffer failed: 許可されていない操作です
そういえば以前 Debian sid amd64 でも起こった現象です.
Debian では Linux 4.8.0 から仕様が変わってroot 以外ではdmesg が読めないようになっています.log file の読める adm group のユーザも駄目.
これは kernelパラメータの kernel.dmesg_restrict
で設定されていて以下のようなコマンドで確認できます.
$ sudo sysctl -a|grep dmesg
kernel.dmesg_restrict = 1
$ cat /proc/sys/kernel/dmesg_restrict
1
これを 1
から 0
に変更することで以前と同じ動作となります.sysctl コマンドや,
$ sudo sysctl -w kernel.dmesg_restrict=0
/proc/sys/kernel/dmesg_restrict
を直接書き換えることで一時的に変更できます.
echo 0 | sudo tee /proc/sys/kernel/dmesg_restrict
動きました.
$ id | grep -o adm
$ echo hello | sudo tee /dev/kmsg
hello
[ 562.152729] hello
$ dmesg -H | tail
[ +0.019933] brcmfmac mmc1:0001:1: firmware: failed to load brcm/brcmfmac43430-sdio.clm_blob (-2)
[ +0.020182] firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
[ +0.020886] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.clm_blob failed with error -2
[ +0.021916] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[ +0.026818] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Oct 23 2017 03:55:53 version 7.45.98.38 (r674442 CY) FWID 01-e58d219f
[ +0.077925] systemd-udevd[376]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
[ +0.537137] EXT4-fs (sda2): re-mounted. Opts: (null)
[ +2.001639] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
[ +1.563625] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[Mar 2 05:58] hello
再起動すると元に戻ってしまうので,/etc/sysctl.d/local.conf
などに設定を書いてくと次回起動時以降も反映されます.
$ sudo install -m 644 -o root -g root /dev/null /etc/sysctl.d/local.conf
$ echo 'kernel.dmesg_restrict = 0' | sudo tee -a /etc/sysctl.d/local.conf
kernel.dmesg_restrict = 0
試した環境
$ dmesg --version
dmesg from util-linux 2.33.1
$ dpkg-query -W util-linux linux-image-*
linux-image-4.19.0-2-arm64 4.19.16-1
linux-image-4.19.0-2-arm64-unsigned
linux-image-arm64 4.19+102
util-linux 2.33.1-0.1
$ lsb_release -dr
Description: Debian GNU/Linux buster/sid
Release: testing
$ uname -a
Linux rpi3 4.19.0-2-arm64 #1 SMP Debian 4.19.16-1 (2019-01-17) aarch64 GNU/Linux
$ cat /proc/device-tree/model ;echo
Raspberry Pi 3 Model B Rev 1.2
One thought to “Debian buster/sid でdmesgを一般ユーザで実行”