Désactiver les ports USB


8

J'utilise le RPI pour créer un programme, mais je dois désactiver les ports USB afin que l'utilisateur final ne puisse pas brancher un clavier ou une souris et jouer avec l'appareil.

Est-ce possible et si oui, comment cela se fait-il?


1
Je pense que c'est ce que vous recherchez: wpkg.org/Disable_/_enable_keyboard_and_mouse_in_Linux
Gerben

1
Le super-collage des ports USB fonctionne également. C'est ce que faisaient les banques. :-P
Gerben

De quoi avez-vous peur que l'utilisateur puisse faire?
Zurechtweiser

@Gerben votre lien expliquant désactiver la souris / le clavier dans le système X Window, pas le matériel de la souris / du clavier USB.
gurcanozturk

Utilisez-vous X, ou simplement la console? Par défaut, la console est protégée par mot de passe. Pourriez-vous expliquer un peu plus la situation pour laquelle vous souhaitez l'utiliser?
Gerben

Réponses:


4

Vous pouvez trouver de la chance avec cette commande:

echo 0x0> / sys / devices / platform / bcm2708_usb / buspower

Cela semble désactiver les ports USB. Je ne l'ai pas testé cependant.


1
Les ports USB seront toujours disponibles pendant le démarrage, donc si l'utilisateur peut redémarrer le PI, cette solution ne fonctionnera pas.
pim

2

Chaque contrôleur hôte USB sous Linux expose un paramètre appelé authorized_default, qui contrôle l'état de tout nouveau périphérique connecté. La définition de 0 rend tous les nouveaux appareils désactivés par défaut:

for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done

Une façon recommandée d'exécuter ce script consiste à utiliser des udevrègles. De cette façon, vous êtes sûr que le script s'exécute au bon moment, lorsque le pilote du contrôleur hôte est déjà chargé, mais qu'aucun des périphériques n'a encore été autorisé. Voir cette question pour un exemple de cette approche.

Une chose que vous devez comprendre est que les verrous logiciels ne sont efficaces que tant que l'utilisateur final ne peut pas débrancher la carte SD et supprimer les protections que vous avez mises en place.


1

Je ne sais pas vraiment si c'est directement possible ... Pourquoi ne pas simplement bloquer physiquement la capacité des utilisateurs à le faire? Soit en le plaçant là où ils ne peuvent pas se rendre, en remplissant les ports ou en mettant un mécanisme de verrouillage sur / autour.


Vous ne connaissez pas l'environnement dans lequel l'appareil va résider. Il peut être situé dans un endroit où vous n'avez aucun contrôle sur qui y a accès, comme dans un rack AV quelque part dans un endroit éloigné à des kilomètres de distance. Vous pouvez l'enfermer dans une armoire, mais généralement la direction ou le personnel sur place auront toujours accès à ces armoires. Il est plus facile de donner un bloc au niveau du logiciel pour décourager les gens de jouer.
ScottN

@ScottN: Bien sûr, je suppose. Remplir les ports avec de l'époxy résoudrait ce problème, mais vraiment ... si quelqu'un a ce niveau d'accès physique à l'appareil, toutes les autres considérations de sécurité sont de toute façon plus ou moins théoriques.
Jacobm001

Oh, remplir les ports d'époxy est vraiment un dernier recours et oublier d'avoir l'appareil utilisable s'il est retourné pour RMA ou quelque chose. Mon point principal était de décourager quelqu'un qui joue avec lui comme du personnel qui branche un clavier et démarre YouTube et regarde des vidéos lorsque cet appareil est censé être utilisé pour faire de la signalisation ou autre chose.
ScottN

1
sudo sh -c "echo 0 > /sys/devices/platform/soc/3f980000.usb/buspower"

Désactivera les ports USB mais aussi le port LAN.

sudo sh -c "echo 1 > /sys/devices/platform/soc/3f980000.usb/buspower"

Les réactive.


0

utilisez SELinux, recherchez ceci en ligne et vous aurez beaucoup de ressources. Il a été développé à cet effet. Vous pouvez ensuite désactiver / activer les ports et d'autres fonctionnalités de votre système Linux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.