Отключение портов USB

8

Я использую RPI для создания программы, но мне нужно отключить порты USB, чтобы конечный пользователь не мог подключить клавиатуру или мышь и связываться с устройством.

Возможно ли это, и если да, то как это сделать?

fypfyp
источник
1
Я думаю, что это то, что вы ищете: wpkg.org/Disable_/_enable_keyboard_and_mouse_in_Linux
Гербен
1
Супер-склеивание портов USB тоже работает. Это то, что банки делали раньше. :-P
Гербен
Что вы боитесь, что пользователь может сделать?
Цюрихтвайзер
@ Получите ссылку, объясняющую отключение мыши / клавиатуры в X Window System, а не USB-мышь / клавиатуру.
gurcanozturk
Вы используете X или только консоль? По умолчанию консоль защищена паролем. Не могли бы вы объяснить немного больше о ситуации, для которой вы хотите ее использовать?
Гербен

Ответы:

4

Вы можете найти удачу с этой командой:

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

Это похоже на отключение портов USB. Я не проверял это все же.

ronnied
источник
1
USB-порты по-прежнему будут доступны во время загрузки, поэтому, если пользователь сможет перезагрузить PI, это решение не будет работать.
ПИМ
2

Каждый хост-контроллер USB в Linux предоставляет параметр authorized_default, который называется , который контролирует состояние любых новых подключенных устройств. Установка его в 0 делает все новые устройства отключенными по умолчанию:

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

Рекомендуемый способ запуска этого скрипта состоит в использовании udevправил. Таким образом, вы уверены, что скрипт выполняется в нужное время, когда драйвер хост-контроллера уже загружен, но ни одно из устройств еще не было авторизовано. Посмотрите этот вопрос для примера такого подхода.

Одна вещь, которую вы должны понимать, это то, что программные блокировки эффективны только до тех пор, пока конечный пользователь не сможет отключить SD-карту и снять защитные устройства, которые вы установили.

Дмитрий Григорьев
источник
1

Я действительно не знаю, что это напрямую возможно ... Почему бы просто физически не заблокировать способность пользователей делать это? Либо помещая его туда, куда они не могут добраться, заполняя порты, либо надевая / окружая механизм блокировки.

Jacobm001
источник
Вы не знаете, в какой среде будет находиться устройство. Оно может быть расположено в месте, где у вас нет контроля над тем, кто имеет к нему доступ, например, в стойке AV где-то в удаленном месте за много миль от вас. Вы можете запереть его в шкафу, но обычно местное руководство или персонал все равно будут иметь доступ к этим шкафам. Проще дать блок на программном уровне, чтобы не дать людям играть.
СкоттN
@ СкоттN: Конечно, я думаю. Заполнение портов эпоксидной смолой решит эту проблему, но на самом деле ... если кто-то имеет такой уровень физического доступа к устройству, все остальные соображения безопасности в любом случае более или менее спорны.
Jacobm001
О, заполнение портов эпоксидной смолой - это действительно последнее средство, и забудьте о возможности использования устройства, если оно возвращено для RMA или чего-то еще. Моя главная цель состояла в том, чтобы отговорить кого-то играть с ним, как персонал, который подключает клавиатуру и запускает YouTube и смотрит видео, когда предполагается, что это устройство будет использоваться для вывесок или чего-то еще.
СкоттN
1
sudo sh -c "echo 0 > /sys/devices/platform/soc/3f980000.usb/buspower"

Отключит порты USB, а также порт LAN.

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

Реактивирует их.

Леннарт Хеннигс
источник
0

используйте SELinux, посмотрите в Интернете, и у вас будет много ресурсов. Это было разработано для этой цели. Затем вы можете отключить / включить порты и другие функции вашей системы Linux.

donitel
источник