Automatika nastavení oprávnění USB zařízení po připojení

Založil Roman Horník, 10. 10. 2020, 01:25:58

Předchozí téma - Další téma

Roman Horník

Jestliže máte USB zařízení, kde je potřeba specifický oprávnění (v mým případě převodníky USB-TTL), třeba že s ním chcete obousměrně komunikovat jako standardní uživatel, ale systém jej nastaví podle svýho tak, jak zrovna nepotřebujete, máte dvě možnosti:
1) po každým připojení změnit oprávnění ručně chmodem jako root,
2) vytvořit si pravidlo v udev.

První možnost je opruz zvláště tehdy, jestliže se například zařízení vinou vyklochtanýho USB občas odpojí. Druhá možnost funguje automaticky.

1) Nejdřív si zjistíme USBID zařízení:
$ lsusb
Bus 002 Device 014: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 002 Device 009: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 002 Device 008: ID 05e3:0752 Genesys Logic, Inc.
Bus 002 Device 007: ID 05e3:0618 Genesys Logic, Inc.
Bus 002 Device 006: ID 0458:6002 KYE Systems Corp. (Mouse Systems)
Bus 002 Device 005: ID 04b8:013c Seiko Epson Corp.
Bus 002 Device 013: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 002 Device 003: ID 058f:6362 Alcor Micro Corp. Flash Card Reader/Writer
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 04b8:0e03 Seiko Epson Corp. Thermal Receipt Printer [TM-T20]
Bus 003 Device 003: ID 1bcf:0005 Sunplus Innovation Technology Inc. Optical Mouse
Bus 003 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


Tady máme 2 zařízení:
Bus 002 Device 014: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port - převodník USB-TTL
Bus 002 Device 013: ID 1a86:7523 QinHeng Electronics CH340 serial converter - převodník USB-RS232
Za ID je samotný USBID sestávající ze dvou hexadecimálních čísel, první je ID výrobce, druhý je ID výrobku samotnýho.

2) Vytvoření pravidla:
1) v /etc/udev/rules.d vytvoříme soubor, třeba s názvem 47-usbser.rules - číslo asi nebude kritický, název taky ne, nevím, jestli je udevem potřeba přípona .rules, ale když už je to u ostatních souborů pravidel, tak to tak necháme.
2) Do něj nasypeme:
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"
idVendor je ID výrobce (067b:2303), idProduct ID výrobku (067b:2303), MODE samotný oprávnění v osmičkový soustavě, GROUP uživatelská skupina oprávněných používat zařízení. Po pravdě nevím, jestli je skupina úplně nutná, nezjišťoval jsem, ale minimálně by se tím dalo zamezit uživatelům mimo skupinu k přístupu k zařízení.
Můžeme tam samozřejmě přidat další řádky se stejnou syntaxí, třeba já mám:
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"


3) Přidáme uživatele do skupiny (s oprávněním roota):
# adduser <uživatel> plugdev (uživatel bez závorek)

Změna by se měla projevit po opětovným připojení zařízení.
Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz