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に記載があった。