Linux環境でベンダーIDに基づいてUSBデバイスを無効にする方法


11

Linux環境でベンダーIDに基づいてUSBデバイスを無効にしたい。ベンダーIDに基づいて、特定のUSBデバイスのみを許可したい。


どのようにLinuxでのブロックUSB / PEN DRIVE(カーリーのlinux)にgrprajapat.blogspot.in/2014/09/...

特定のベンダーが1つあります。cdc_acmを無効にするデバイスIDです。それ以来、私はこれを別の質問にしました
mirabilos 2014年

回答:


10

デフォルトでデバイスを無効にするudevルールを作成できますが、ベンダーIDによって特定のルールを有効にします。/etc/udev/rules.d/01-usblockdown.rulesデバイスを無効にするルールを含むファイルを作成します。

ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh -c 'for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done'"

次に、許可するデバイスを有効にするためのルール(ATTR{idVendor}ベンダーIDを取得するために使用できます):

ACTION=="add", ATTR{idVendor}=="0000" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"

詳細については、「UDEVを使用したLinuxのロックダウン」を参照してください。


上記のコマンドで十分であるか、またはこれを有効にするにはudevadmトリガーを実行する必要があります。
subbarao 2013年

こんにちは、ステファン、特定のペンドライブを許可するには、両方のルールを追加する必要がありますか?
subbarao 2013年

@subbaraoはい、両方のルールを追加する必要があります。最初のルールはデフォルトですべてをブロックし、2番目は特定のデバイスを許可します。
DBX12

3

(これはコメントとしては良かったかもしれませんが、ポイントが足りないので回答に拡大しました)

ベンダーと製品IDで特定のデバイスを無効にすることを除いて、すべてのUSBデバイスを許可する方法を探してここに来ました。 ud を使用してusbサウンドデバイスを無効にする方法は、0d8c:000cの例に答えています。

作成/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'"

RUN=vsを使用してRUN+=、以下の回答とコメントの間に相違があります。前者を試しましたが、うまくいきました。

私はdmesgまたはlusbが異なるレポートをすることを期待していましたが、どちらも許可されていないデバイスが以前と同じように列挙されていることを示していますが、自動的に起動する他のプロセス/モジュールが実行されていないように見え、これが望ましい効果でした。cat /sys/bus/usb/devices/1-2.2.1.1.4/authorized(たとえば、1-2.2 ...はdmesgにあります)は、0が正しい場所に配置されたことを示しています。


udevの間にいくつかの変更があったかどうかはわかりませんが、現在、属性はATTRS(複数)と名付けられており、でATTRデバイスを照会するときはそうではありませんudevadm
Baptiste Mille-Mathias
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.