Ich möchte USB-Geräte basierend auf der Hersteller-ID in einer Linux-Umgebung deaktivieren. Ich möchte nur bestimmte USB-Geräte zulassen, basierend auf der Hersteller-ID.
Ich möchte USB-Geräte basierend auf der Hersteller-ID in einer Linux-Umgebung deaktivieren. Ich möchte nur bestimmte USB-Geräte zulassen, basierend auf der Hersteller-ID.
Antworten:
Sie können eine udev-Regel erstellen, die Geräte standardmäßig deaktiviert, bestimmte jedoch nach Hersteller-ID aktiviert. Erstellen Sie eine Datei /etc/udev/rules.d/01-usblockdown.rules
, die eine Regel zum Deaktivieren von Geräten enthält:
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"
Und dann Regeln zum Aktivieren der Geräte, die Sie zulassen möchten (Sie können sie verwenden ATTR{idVendor}
, um die Hersteller-ID abzurufen):
ACTION=="add", ATTR{idVendor}=="0000" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
Siehe „Sperren von Linux mit UDEV“ für weitere Informationen.
(Dies wäre vielleicht besser als Kommentar gewesen, aber mir fehlen die Punkte, also habe ich es zu einer Antwort erweitert.)
Ich bin hierher gekommen, um zu suchen, wie alle USB-Geräte zugelassen werden können, mit Ausnahme der Deaktivierung eines bestimmten Geräts nach Hersteller und Produkt-ID. So deaktivieren Sie ein USB- Soundgerät mit udev beantwortet es für das Beispiel 0d8c: 000c.
Erstellen /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'"
Es gibt eine Diskrepanz zwischen der Antwort und einem Kommentar unten mit RUN=
vs. RUN+=
, ich habe das erstere ausprobiert und es hat gut funktioniert.
Ich hatte erwartet, dass dmesg oder lusb unterschiedlich berichten, aber beide zeigen, dass das nicht autorisierte Gerät wie zuvor aufgelistet wird, aber andere Prozesse / Module, die automatisch gestartet wurden, scheinen nicht ausgeführt zu werden, was der gewünschte Effekt war. cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized
(die 1-2.2 ... zum Beispiel, die in dmesg zu finden ist) zeigt, dass die 0 an der richtigen Stelle platziert wurde.
ATTRS
(Plural) und nicht, ATTR
wenn ich Geräte mit abfrage udevadm
.