[+]dmesg: odczyt bufora jądra nie powiódł się: Operacja niedozwolona
: 20 listopada 2016, 13:35
Podczas próby uruchomienia komendy dmesg w Debianie testowym (Stretch) zwraca błąd:
w języku angielskim
Z tego co wyszukałem jest to konsekwencja ostatniej zmiany w kernelu Debiana z oficjalnego repozytorium wersji testowej.
Doszukałem się jedynie notki na lunchpad: https://launchpad.net/debian/+source/linux/4.8.4-1~exp1 gdzie wśród zmian znajdziemy:
Ponieważ jestem jedynym użytkownikiem komputera, a jeśli już ktoś z niego korzysta to jest to najbliższa rodzina, przywróciłem sobie poprzednią wartość zmiennej jądra na pozwalającą odczyt bufora jądra przez zwykłych użytkowników.
Aby sprawdzić bieżącą wartość można skorzystać z dwóch alternatywnych metod:
- tradycyjnej:
- lub nowej:
Wartość 1 wskazuje na aktywną restrykcję komendy dmesg.
Aby zdjąć restrykcję należy ustawić 0.
Można to znowu ustawić dwiema alternatywnymi metodami:
- klasyczną
- nową
Od tej pory zwykły użytkownik powinien mieć możliwość korzystania z dmesg.
Zmiana obowiązuje tymczasowo do kolejnego restartu systemu.
Aby obowiązywała również po restarcie należy dopisać, jako root, do pliku /etc/sysctl.conf zmienną:
Można to zrobić za pomocą preferowanego edytora tekstowego lub wykorzystać do tego komendę echo:
Kod: Zaznacz cały
$dmesg
dmesg: odczyt bufora jądra nie powiódł się: Operacja niedozwolona
Kod: Zaznacz cały
$dmesg
dmesg: read kernel buffer failed: Operation not permitted
Doszukałem się jedynie notki na lunchpad: https://launchpad.net/debian/+source/linux/4.8.4-1~exp1 gdzie wśród zmian znajdziemy:
Kod: Zaznacz cały
* security,printk: Enable SECURITY_DMESG_RESTRICT, preventing non-root users
reading the kernel log by default (sysctl: kernel.dmesg_restrict)
Aby sprawdzić bieżącą wartość można skorzystać z dwóch alternatywnych metod:
- tradycyjnej:
Kod: Zaznacz cały
$cat /proc/sys/kernel/dmesg_restrict
Kod: Zaznacz cały
$sysctl -n kernel.dmesg_restrict
Aby zdjąć restrykcję należy ustawić 0.
Można to znowu ustawić dwiema alternatywnymi metodami:
- klasyczną
Kod: Zaznacz cały
$echo 0 > /proc/sys/kernel/dmesg_restrict
Kod: Zaznacz cały
$sysctl -w kernel.dmesg_restrict=0
Zmiana obowiązuje tymczasowo do kolejnego restartu systemu.
Aby obowiązywała również po restarcie należy dopisać, jako root, do pliku /etc/sysctl.conf zmienną:
Kod: Zaznacz cały
kernel.dmesg_restrict=0
Kod: Zaznacz cały
$echo kernel.dmesg_restrict=0 >> /etc/sysctl.conf