ฉันต้องการปิดการใช้งานอุปกรณ์ usb ตามรหัสผู้ขายในสภาพแวดล้อม Linux ฉันต้องการอนุญาตเฉพาะอุปกรณ์ USB ที่เฉพาะเจาะจงตามรหัสผู้ขาย
ฉันต้องการปิดการใช้งานอุปกรณ์ usb ตามรหัสผู้ขายในสภาพแวดล้อม Linux ฉันต้องการอนุญาตเฉพาะอุปกรณ์ USB ที่เฉพาะเจาะจงตามรหัสผู้ขาย
คำตอบ:
คุณสามารถสร้างกฎ udev ที่ปิดใช้งานอุปกรณ์เป็นค่าเริ่มต้น แต่เปิดใช้งานกฎบางอย่างด้วยรหัสผู้ขาย สร้างไฟล์/etc/udev/rules.d/01-usblockdown.rules
ที่มีกฎเพื่อปิดใช้งานอุปกรณ์:
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"
จากนั้นกฎเพื่อเปิดใช้งานอุปกรณ์ที่คุณต้องการอนุญาต (คุณสามารถใช้ATTR{idVendor}
เพื่อรับที่ ID ผู้ขาย):
ACTION=="add", ATTR{idVendor}=="0000" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
ดูที่"การล็อก Linux โดยใช้ UDEV"สำหรับข้อมูลเพิ่มเติม
(นี่อาจจะดีกว่าเป็นความคิดเห็น แต่ฉันขาดคะแนนจึงขยายเข้าไปในคำตอบ)
ฉันมาที่นี่เพื่อค้นหาวิธีการอนุญาตอุปกรณ์ usb ทั้งหมดยกเว้นการปิดใช้งานอุปกรณ์เฉพาะโดยผู้ขายและรหัสผลิตภัณฑ์ วิธีการปิดการใช้งานอุปกรณ์เสียง usb ที่มี udevจะตอบสำหรับตัวอย่าง 0d8c: 000c
สร้าง/etc/udev/rules.d/disable-usb-device.rules
:
ACTION=="add", ATTR{idVendor}=="0d8c", ATTR{idProduct}=="000c", RUN="/bin/sh -c 'echo 0 >/sys/\$devpath/authorized'"
มีความแตกต่างระหว่างคำตอบและความคิดเห็นด้านล่างกับRUN=
เทียบกับRUN+=
ฉันลองก่อนและมันทำงานได้ดี
ฉันคาดหวังว่า dmesg หรือ lusb จะรายงานแตกต่างกัน แต่พวกเขาทั้งคู่แสดงอุปกรณ์ที่ไม่ได้รับอนุญาตที่ได้รับแจกแจงเหมือนเมื่อก่อน แต่กระบวนการ / โมดูลอื่น ๆ ที่เปิดตัวโดยอัตโนมัติจะไม่ทำงานซึ่งเป็นผลที่ต้องการ cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized
(ตัวอย่าง 1-2.2 ... ซึ่งสามารถพบได้ใน dmesg) แสดงว่า 0 ถูกวางในตำแหน่งที่ถูกต้อง
ATTRS
(พหูพจน์) และไม่ได้เมื่อฉันอุปกรณ์แบบสอบถามATTR
udevadm