วิธีการปิดการใช้งานอุปกรณ์ USB ตามรหัสผู้ขายในสภาพแวดล้อม Linux?


11

ฉันต้องการปิดการใช้งานอุปกรณ์ usb ตามรหัสผู้ขายในสภาพแวดล้อม Linux ฉันต้องการอนุญาตเฉพาะอุปกรณ์ USB ที่เฉพาะเจาะจงตามรหัสผู้ขาย


วิธีการบล็อก USB / PEN DRIVE ใน Linux (kali linux) grprajapat.blogspot.in/2014/09/..

ฉันมีผู้จำหน่ายรายเดียว: ID อุปกรณ์ฉันต้องการปิดการใช้งาน cdc_acm ฉันได้ตั้งแต่ทำนี้เป็นคำถามที่แยกต่างหาก
mirabilos

คำตอบ:


10

คุณสามารถสร้างกฎ 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"สำหรับข้อมูลเพิ่มเติม


เป็นคำสั่งดังกล่าวเพียงพอหรือเราต้องทำ udevadm ทริกเกอร์เพื่อรับผลของสิ่งนี้
subbarao

สวัสดี Stephane เราต้องเพิ่มกฎทั้งสองเพื่ออนุญาตให้ใช้ pendrive ที่เฉพาะเจาะจงหรือไม่
subbarao

@subbarao ใช่คุณต้องเพิ่มกฎทั้งสองอย่างสิ่งแรกจะบล็อกสิ่งใด ๆ ตามค่าเริ่มต้นที่สองอนุญาตให้อุปกรณ์บางอย่าง
DBX12

ใช้งานได้เมื่อคุณเสียบคีย์บอร์ดเมื่อระบบบูต แต่ถ้าแป้นพิมพ์เชื่อมต่ออยู่และคุณรีบูทแป้นพิมพ์จะทำงานบนระบบปฏิบัติการบูทแบ็คอัพ ถอดปลั๊กแป้นพิมพ์แล้วเสียบใหม่แป้นพิมพ์ไม่ทำงานตามที่คาดไว้ มีบางพื้นที่ที่ต่ำกว่าระดับที่กฎนี้สามารถเรียกใช้ก่อนที่จะเปิดใช้งานอุปกรณ์บูตหรือไม่?
ScottN

3

(นี่อาจจะดีกว่าเป็นความคิดเห็น แต่ฉันขาดคะแนนจึงขยายเข้าไปในคำตอบ)

ฉันมาที่นี่เพื่อค้นหาวิธีการอนุญาตอุปกรณ์ 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 ถูกวางในตำแหน่งที่ถูกต้อง


ผมไม่ทราบว่าถ้ามีการเปลี่ยนแปลงบางอย่างในระหว่างใน udev แต่คุณลักษณะในปัจจุบันมีการตั้งชื่อATTRS(พหูพจน์) และไม่ได้เมื่อฉันอุปกรณ์แบบสอบถามATTR udevadm
Baptiste Mille-Mathias
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.