RPIを使用してプログラムを作成していますが、USBポートを無効にして、エンドユーザーがキーボードやマウスを接続したり、デバイスを操作したりできないようにする必要があります。
これは可能ですか?可能な場合、どのように行われますか?
RPIを使用してプログラムを作成していますが、USBポートを無効にして、エンドユーザーがキーボードやマウスを接続したり、デバイスを操作したりできないようにする必要があります。
これは可能ですか?可能な場合、どのように行われますか?
回答:
Linuxの各USBホストコントローラーは、という設定を公開しますauthorized_default
。これは、新しく接続されたデバイスの状態を制御します。これを0に設定すると、すべての新しいデバイスがデフォルトで無効になります。
for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done
このスクリプトを実行する推奨方法は、udev
ルールを使用することです。これにより、ホストコントローラードライバーが既に読み込まれていて、デバイスがまだ承認されていないときに、スクリプトが適切なタイミングで実行されていることを確認できます。このアプローチの例については、この質問を参照してください。
理解しておくべきことの1つは、エンドユーザーがSDカードを取り外したり、設置した保護を解除したりできない場合にのみ、ソフトウェアロックが有効であることです。
私はそれが直接可能であることを本当に知りません...なぜそれを行うユーザーの能力を単に物理的にブロックしないのですか?彼らが到達できない場所に置くか、ポートを埋めるか、ロック機構をその上/周りに置くかのいずれかです。
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"
それらを活性化します。