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

ดังนั้นมันจึงเป็นเรื่องเล็กน้อยโดยดูข้อความสุดท้ายจากรายงานข้อผิดพลาด:

ส่วนหนึ่งของการเปลี่ยนแปลงจากเคอร์เนลดังกล่าว: * ความปลอดภัย, 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

คุณสามารถรันคำสั่งนี้: cat /dev/kmesgในฐานะผู้ใช้ทั่วไปได้หรือไม่?
direprobs

มันควรจะ/dev/kmsgอยู่ในความคิดเห็นแรกที่เป็นตัวพิมพ์ผิด
direprobs

ง่ายขึ้นที่จะทำให้ถาวรโดยเพิ่ม kernel.dmesg_restrict = 0 ไปที่/etc/sysctl.conf
Knobee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.