[unix] dmesg : 커널 버퍼 읽기 실패 : 권한 거부

최근 데비안은에 대한 기본 동작을 변경했으며 dmesg로컬 사용자가 간단히 사용할 수 없습니다.

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

동일하다 :

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

버그 추적기를 쳐다 보면 다음이 발생합니다.

로컬 사용자가 dmesg를 사용할 수있는 이전 동작으로이 동작을 다시 변경하는 방법 특정 그룹 (예 : sudoers 또는 이와 유사한 것)을 찾을 수 없습니다.



답변

따라서 버그 보고서의 마지막 메시지를 보면 실제로 사소한 것입니다.

위에서 언급 한 커널의 변경 로그 부분 : * security, printk : 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 파일로 저장하십시오.

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


답변