dmesg: ошибка чтения буфера ядра: разрешение запрещено

17

С недавних пор Debian изменил поведение по умолчанию для, dmesgи я не могу использовать его просто от своего локального пользователя.

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

То же самое касается:

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

В главной роли в трекере ошибок это приводит к:

Как я могу изменить это поведение обратно к предыдущему, где локальный пользователь может использовать dmesg. Я не мог найти определенную группу для этого (например, sudoers или что-то подобное).

малат
источник

Ответы:

22

Так что это было на самом деле тривиально, если посмотреть на последнее сообщение из сообщения об ошибке:

Часть журнала изменений из вышеупомянутого ядра: * security, printk: Включить SECURITY_DMESG_RESTRICT, не давая пользователям без полномочий root читать журнал ядра по умолчанию (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
малат
источник
Вы можете выполнить эту команду: cat /dev/kmesgкак обычный пользователь?
direprobs
Это должно быть /dev/kmsgв первом комментарии, который был опечаткой.
direprobs
Легче сделать его постоянным путем добавления kernel.dmesg_restrict = 0 к/etc/sysctl.conf
Knobee