Je souhaite désactiver les périphériques USB en fonction de l'ID du fournisseur dans l'environnement Linux. Je souhaite autoriser uniquement des périphériques USB spécifiques, en fonction de l'ID du fournisseur.
Je souhaite désactiver les périphériques USB en fonction de l'ID du fournisseur dans l'environnement Linux. Je souhaite autoriser uniquement des périphériques USB spécifiques, en fonction de l'ID du fournisseur.
Réponses:
Vous pouvez créer une règle udev qui désactive les périphériques par défaut, mais en active certains par ID de fournisseur. Créez un fichier /etc/udev/rules.d/01-usblockdown.rules
contenant une règle pour désactiver les appareils:
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"
Et puis des règles pour activer les appareils que vous souhaitez autoriser (vous pouvez utiliser ATTR{idVendor}
pour obtenir l'ID du fournisseur):
ACTION=="add", ATTR{idVendor}=="0000" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
Voir "Verrouiller Linux à l'aide d'UDEV" pour plus d'informations.
(Cela aurait pu être mieux en tant que commentaire, mais je manque de points, alors développez-le en réponse)
Je suis venu ici chercher comment autoriser tous les périphériques USB, sauf en désactiver un spécifique par fournisseur et identifiant de produit. Comment désactiver un périphérique audio USB avec udev y répond pour l'exemple 0d8c: 000c.
Créer /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'"
Il y a une différence entre la réponse et un commentaire ci-dessous avec RUN=
vs RUN+=
, j'ai essayé la première et cela a bien fonctionné.
Je m'attendais à ce que dmesg ou lusb rapporte différemment, mais ils montrent tous les deux que le périphérique non autorisé est énuméré comme auparavant, mais d'autres processus / modules qui auraient été lancés automatiquement ne semblent pas fonctionner, ce qui était l'effet souhaité. cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized
(le 1-2.2 ... par exemple qui peut être trouvé dans dmesg) montre que le 0 a été mis au bon endroit.
ATTRS
(pluriel) et pas ATTR
quand je demande des périphériques avec udevadm
.