Debian は最近のデフォルト動作を変更したため、dmesg
ローカルユーザだけでは使用できません。
% dmesg
dmesg: read kernel buffer failed: Operation not permitted
以下にも適用されます。
% cat /dev/kmsg
cat: /dev/kmsg: Operation not permitted
バグトラッカーで主演の役割を引き受けて、次のような結果を得ます。
この動作をローカルユーザーがdmesgを使用できるようにした以前の動作に戻すにはどうすればよいですか?特定のグループ(sudoersなど)が見つかりません。
答え1
したがって、これは実際にマイナーなことです。エラーレポートの最後のメッセージを見てください。
上記のカーネルの変更ログの一部:
- security、printk:root以外のユーザーがデフォルトでカーネルログを読み取るのを防ぐSECURITY_DMESG_RESTRICTを有効にします(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ファイルとして保存します。
$ echo kernel.dmesg_restrict = 0 | sudo tee -a /etc/sysctl.d/10-local.conf >/dev/null
$ cat /etc/sysctl.d/10-local.conf
kernel.dmesg_restrict = 0
Ubuntuを使用している場合、バージョン20.10以降ではこれを行う行がすでにあります/etc/sysctl.d/10-kernel-hardening.conf
。ファイルを変更した後に変更を適用するには、ユーザーが再起動または実行する必要がありますsudo service procps restart
。
答え2
これが私にとってうまくいく方法です。
chown root `which dmesg`
chmod u+s `which dmesg`