linuxでusbデバイスの権限について


linuxでusbデバイスにつなぐと、usbデバイスへのアクセスができないことがある。
このとき、 Permission denied などの権限の問題で拒否されている場合は、udevのルールを追加することで問題が解消できる可能性がある。
以下で詳細を記載していく。

udevとは?

udevとは、system.dの一部として動作しているシステム。
udevがudevルールに従ってusbデバイスのアクセスの可否を決定しているという理解で問題ない(はず)
そのため、使用したいusbデバイスに関して許可を与えるudevルールを追加すれば、使用できるようになる(はず)

udevルールの設定

自分でルールを設定する際は、/etc/udev/rules.d/ 内に{number}-{rule-name}.rulesの形式のファイルを作成し、

SUBSYSTEM=="usb", ATTR{idVendor}=="[devicevendor]", ATTRS{idProduct}=="[deviceproduct]" MODE="[mode]"

のように設定すると良い。
このとき、[devicevendor][deviceproduct]lsusb 等のコマンドから調べられる。
一例としては、

SUBSYSTEMS=="usb", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ce6", MODE="0666"

のような形となる。

ただし、上記のようにMODE="0666" は緩すぎるため、

SUBSYSTEM=="usb", ATTR{idVendor}=="[yourdevicevendor]", MODE="0660" TAG+="uaccess"

とすることが、最近の systemd 的に推奨されている設定となるらしいとの記載がarchlinuxのwikiに記載があった。

参考