กำหนดสิทธิ์ใน / dev คืออะไร?


11

ฉันมีข้อผิดพลาดที่การอนุญาต/dev/input/event*ไม่ถูกต้องดังนั้นเมื่อฉันใช้Mumbleแอปพลิเคชันไม่สามารถตรวจพบการกดปุ่ม ถ้าฉันเรียกใช้คำสั่งต่อไปนี้มัน "แก้ไข" ปัญหา แต่ฉันต้องการแก้ไขถาวร

sudo chmod a+r /dev/input/event/*

อะไรเป็นตัวกำหนดสิทธิ์การใช้งาน/dev/input/event*และฉันจะตั้งค่าการอนุญาตถาวรได้อย่างไร


6
โปรดทราบว่าหากคุณให้สิทธิ์ "ทั้งหมด" ในการอ่าน/dev/input/event/*คุณจะต้องให้ทุกคนเข้าถึงแป้นพิมพ์ของคุณเช่นรหัสผ่านที่คุณพิมพ์ ในระบบผู้ใช้คนเดียวสิ่งนี้อาจไม่สำคัญนัก แต่โดยทั่วไปแล้วในระบบผู้ใช้คนเดียวเรามักจะใช้ผู้ใช้ระบบเป็นชั้นเสริมความปลอดภัยในกรณีที่ส่วนประกอบบางส่วนถูกบุกรุกและโดยยกตัวอย่างเช่นการnobodyเข้าถึงผู้ใช้แป้นพิมพ์ของคุณ สตรีมอินพุตคุณกำลังอ่อนการป้องกันนี้ แม้ว่าสิ่งนี้อาจ "แก้ไข" การสับสน แต่ก็ไม่ใช่วิธีแก้ไขปัญหาทั่วไปที่เหมาะสมสำหรับปัญหาของคุณ ควรมีวิธีที่ดีกว่า
Robie Basak

3
@ popey คุณสามารถพูดเพิ่มเติมเกี่ยวกับสาเหตุที่ทำให้สิทธิ์บนโหนด/dev/inputผิดและความเป็นเจ้าของและการอนุญาตในปัจจุบันคืออะไร (บางทีอาจเป็นผลลัพธ์ls -l) เป็นปัญหาที่inputกลุ่มไม่มีสิทธิ์อ่าน (หรือไม่ใช่เจ้าของกลุ่ม) หรือไม่? ในระบบของฉันไฟล์เหตุการณ์มีroot:inputความเป็นเจ้าของและทั้งผู้ใช้และเจ้าของกลุ่มสามารถอ่านได้ หากคุณไม่มีสิ่งนี้คุณอาจลองตั้งค่าวิธีนั้นแทนที่จะปล่อยให้ทุกคนอ่าน ถ้าคุณทำมีนี้ก็อาจจะเพียงพอสำหรับ Mumble ในการทำงานด้วยอำนาจของinputกลุ่ม
Eliah Kagan

@EliahKagan คุณคิดอย่างไรกับคำตอบของฉัน คุณช่วยทบทวนได้ไหม
Sergiy Kolodyazhnyy

ใช่มันไม่ดี ใช้ ACL ดูคำตอบของฉันด้านล่าง
solsTiCe

คุณช่วยให้ฉันทราบรุ่นการแจกจ่ายหรือรุ่น xorg-server ได้หรือไม่ เพราะ xorg-server 2: 1.9.99.902-2ubuntu1 ได้แก้ไขปัญหาแล้ว
Tohid Tamboli

คำตอบ:


4

ขึ้นมีความยืดหยุ่นวิธีการจัดการกับไฟล์ที่ได้รับอนุญาตคือการใช้ACL

sudo setfacl -m u:popey:rw /dev/input/eventx

หากคุณต้องการทำสิ่งนี้อย่างถาวรคุณสามารถใช้กฎ udev ที่ตั้งไว้สำหรับอุปกรณ์อินพุตเหตุการณ์ของคุณ

เพิ่มไฟล์/etc/udev/rules.d/99-userdev-input.rulesด้วย:

KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:popey:rw $env{DEVNAME}"

คุณสามารถตรวจสอบการอนุญาต ACL ด้วย

getfacl /dev/input/event*

2

ฉันไม่รู้ว่าตอนแรกกำหนดสิทธิ์ของอุปกรณ์ตัวละคร / dev / input / event * ได้อย่างไร

แต่ฉันรู้ว่าคุณสามารถเปลี่ยนการอนุญาตเหล่านั้นด้วยซอฟต์แวร์ที่อยู่ในระบบของคุณโดยค่าเริ่มต้นเป็นส่วนหนึ่งของ coreutils man mknodดูคำสั่ง

สิทธิ์ของอุปกรณ์เหตุการณ์ของฉันคือ:

crw-rw ---- 1 อินพุตราก 13, 64 เม.ย. 14 06:39 / dev / อินพุต / event0

นี่คือตัวอย่างการใช้งาน:

~$ sudo mknod lolwat c 4 64 
~$ sudo mknod lolwatnow c 4 64  -m 777
~$ ls -l lolwat*
crw-r--r-- 1 root root 4, 64 Apr 14 08:07 lolwat
crwxrwxrwx 1 root root 4, 64 Apr 14 08:08 lolwatnow

หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับการตัดสินใจเลือกตัวเลขหลักและรองดูที่นี่

ตอนนี้คุณบอกว่าสิทธิ์ผิด ดังนั้นสิ่งที่จะต้องตั้งค่าพวกเขาผิดและสิ่งนั้นจะต้องทำงานเป็นราก mknod สามารถใช้สร้างอุปกรณ์ได้ แต่ mkdev ก็สามารถทำได้เช่นกัน คุณอาจต้องการดูสิทธิ์ของสิ่งที่การกระทำเริ่มต้นสำหรับ mkdev และ mknod

เช่นเดียวกับในตัวอย่างของฉัน: / dev / input / event0 มีสิทธิ์ crw-rw แต่สิทธิ์เริ่มต้นของ lolwat ถูกตั้งค่าเป็น crw-r - r -

ฉันมีความไม่แน่นอนบางอย่างไม่ว่าจะเป็นประเภทอุปกรณ์กำหนดสิทธิ์ดั้งเดิมคุณสามารถทดลองใช้สิ่งนี้เพื่อค้นหา

นี่คือลิงค์สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ mknod


พึมพำทำงานเป็นรากได้อย่างไร
j0h

1

โดยทั่วไปคุณจะต้องเพิ่มไฟล์ใน/etc/udev/rules.d/(คุณสามารถตั้งชื่อไฟล์ได้75-input-events.conf)

และเพิ่มบรรทัดKERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777"สำหรับแต่ละเหตุการณ์ลงในไฟล์นั้นโดยที่ x คือตัวเลข ตัวอย่างเช่นฉันมีกิจกรรม 0 ถึง 9 ดังนั้นฉันจะทำกับแต่ละคนโดยส่วนตัว คำตอบสุดท้ายในกระทู้นี้แนะนำว่าคุณสามารถเพิ่มKERNEL==event*(เช่นด้วย wild card) ได้เช่นกัน


0

คำแนะนำของฉันคือคุณติดตั้งแอปพลิเคชันอินพุต - utils

sudo -i
apt-get update
apt-get install input-utils

นี่คือชุดของโปรแกรมอรรถประโยชน์ที่มีประโยชน์เมื่อทำงานกับเลเยอร์อินพุตของเคอร์เนล Linux (เวอร์ชัน 2.6 ขึ้นไป) รวมเป็นยูทิลิตี้เพื่อแสดงรายการอุปกรณ์อินพุตที่เคอร์เนลรู้จักแสดงเหตุการณ์อินพุตที่ได้รับจากอุปกรณ์และเคียวรีหรือแก้ไขแม็พคีย์บอร์ด

คำสั่งที่น่าสนใจคือ:

sudo -i 
lsinput

มันจะดัมพ์อุปกรณ์อินพุตทั้งหมดและรายละเอียดที่เกี่ยวข้องเกี่ยวกับอุปกรณ์

สามารถสังเกตเหตุการณ์อินพุตโดยใช้คำสั่งโดยระบุหมายเลขอุปกรณ์ Nth:

sudo -i
input-events <device number>

จากนั้นหนึ่งสามารถดัมพ์การแม็พคีย์บอร์ดของอุปกรณ์เหตุการณ์เฉพาะโดยใช้คำสั่งโดยระบุหมายเลขอุปกรณ์ Nth:

sudo -i
input-kyb <device number>

ด้วยเครื่องมือเหล่านี้สามารถดีบักระบบเพื่อดูว่าอินพุตสร้างรหัสเหตุการณ์ที่คาดไว้หรือไม่และช่วยแก้ไขปัญหาเช่นสาเหตุที่คีย์ไม่ทำงานหรือแมปไม่ถูกต้อง

Udev เป็นตัวจัดการอุปกรณ์สำหรับเคอร์เนล Linux มันจัดการโหนดอุปกรณ์ใน / dev และจัดการการดำเนินการพื้นที่ผู้ใช้ทั้งหมดเมื่อเพิ่มหรือลบอุปกรณ์

Evdev เป็นอินเทอร์เฟซเหตุการณ์อินพุตทั่วไปในเคอร์เนล Linux มันสรุปเหตุการณ์อินพุตดิบจากไดรเวอร์อุปกรณ์และทำให้พร้อมใช้งานผ่านอุปกรณ์อักขระใน/dev/input/ไดเรกทอรี

ทุกครั้งที่มีการเปลี่ยนแปลงเกิดขึ้นภายในโครงสร้างอุปกรณ์เคอร์เนลจะปล่อย uevent ซึ่งรับโดย udev จากนั้น udev ปฏิบัติตามกฎที่ประกาศไว้ในไดเร็กทอรี /etc/udev/rules.d, /run/udev/rules.d และ /lib/udev/rules.d ไดเรกทอรี

จากข้อมูลที่มีอยู่ใน uevent พบกฎหรือกฎที่จำเป็นต้องทริกเกอร์และดำเนินการที่จำเป็น

การกระทำเหล่านี้สามารถสร้างหรือลบไฟล์อุปกรณ์ แต่ยังสามารถทริกเกอร์การโหลดไฟล์เฟิร์มแวร์เฉพาะลงในหน่วยความจำเคอร์เนล


0

ในการใช้งานเทอร์มินัล:

sudo nano -b /etc/rc.local

ลงไปที่บรรทัดที่ระบุว่า "exit 0" และพิมพ์บรรทัดข้างบน:

sudo chmod a + r / dev / input / event

กด Ctrl + x เพื่อออก มันจะถามคุณว่าคุณต้องการบันทึกหรือไม่ กด y มันจะถามคุณว่าจะบันทึกเป็นอย่างไร เพียงกด Enter

ตอนนี้คำสั่งนั้นควรเริ่มต้นทุกครั้งที่ทำการบู๊ตและให้สิทธิ์แก่คุณในโฟลเดอร์นั้น ไฟล์ /etc/rc.local มีสิทธิ์รูทโดยอัตโนมัติดังนั้นคุณไม่จำเป็นต้องป้อนรหัสผ่านเพื่อทำสิ่งนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.