it-swarm.dev

Jak povolím uživateli, který není výchozím uživatelem, používat sériové zařízení ttyUSB0?

Mám systém Ubuntu 11.10 se 2 uživateli:

  • První byl vytvořen během instalace
  • Druhý místo toho byl vytvořen po. Patří do skupiny sudoers.

Nyní je problém ten, že když se druhý pokusí použít zařízení ttyUSB0 je vrácena následující chyba:

"Could not open serial port /dev/ttyUSB0"

Opravil jsem to pomocí:

Sudo chown :second_user /dev/ttyUSB0

Po odpojení a opětovném připojení zařízení se však problém vrátí.

Existuje způsob, jak různým uživatelům umožnit přístup k zařízením? Předpokládám, že musím přidat uživatele do konkrétní skupiny. V současné době je vlastníkem root a skupinou je dialout. Nejsem si však o skupině jistý a nevím, jak přidat uživatele.

Dík!

37
Maverik

Jak jste si všimli, zařízení /dev/ttyUSB0 Má skupinu dialout. Vše, co musíte udělat, je přidat druhého uživatele do skupiny dialout:

Sudo adduser second_user dialout

aby se to projevilo, bude se second_user muset odhlásit a znovu přihlásit.

50
Jeremy Kerr

Snadný způsob:

sudoedit /etc/udev/rules.d/50-myusb.rules

Uložit tento text:

KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"

Odpojte zařízení a znovu jej připojte a měli byste jej číst/zapisovat od každého uživatele!

13
Orion Lawlor

Dalo by se použít UDEV. Je to systém, který spouští pokaždé, když připojíte nebo odpojíte zařízení (mimo jiné). S ním skriptujete různé věci, které se mají stát, včetně nastavení oprávnění.

Spustit sudoedit /etc/udev/rules.d/50-ttyusb.rules a tam to nalepte:

KERNEL=="ttyUSB[0-9]*",NAME="tts/USB%n",SYMLINK+="%k",GROUP="uucp",MODE="0666"

Uložte, ukončete a restartujte a měli byste být v provozu. Nastavení oprávnění na 666 umožňuje komukoli psát do zařízení.

Vycházím z toho tato stránka což je z před několika lety, ale něco takového by mělo fungovat, pokud Jeremyho řešení nefunguje.

7
Oli

Fantastické - zde uvedené řešení UDEV byla pro mě vstupenka.

Nainstaloval jsem program Icom CS-F3020_F5010_F5020 přes Wine, vytvořil jsem odkaz na port COM takto:

ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 but nothing. 

Pak jsem si uvědomil, že musím změnit oprávnění na/dev/ttyUSB0, abych k tomu měl přístup. Funguje to skvěle, dokud neodpojíte/znovu nezapojíte USB, pak musíte znovu změnit oprávnění.

Snažil jsem se přidat svého uživatele do skupiny s dialoutem, ale problém to z nějakého důvodu nevyřešil.

Použití UDEV řeší poslední kousek skládačky. Nyní mohu své rádio Icom naprogramovat pomocí Linuxu, zapojit a odpojit zařízení USB/Serial bez dalších potíží. Woohoo. Dík.

5
Tom

Pravidla udev fungují, ale jak je napsáno, mají velmi ošklivý vedlejší účinek, protože zpřístupňují všechna zařízení ttyUSB* Všem. To není dobré, protože to může být bezpečnostní riziko v závislosti na tom, co je v systému.

Místo toho použijte selektivnější pravidlo udev. Například mám zařízení USB, které ovládá sadu přepínačů. Z dmesg, když je připojen, vidím ID výrobce a kód produktu (plus, v tomto případě i sériové číslo zařízení). Mohu přidat:

ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001"

na řádky jádra výše a pravidlo se bude vztahovat pouze na toto zařízení. Ještě lépe než přiřazení k proměnné MODE nastavte skupinu také:

GROUP="whatever", MODE="0660"

pak pouze lidé ve skupině 'whatever' získají přístup pro zápis.

John Bowler

3
John Bowler