Čtení / zápis na sériový port bez rootování?
On 12 února, 2021 by adminPíšu aplikaci pro čtení / zápis na / ze sériového portu ve Fedora14 a funguje skvěle, když ji spustím jako root. Ale když Spouštím to jako normální uživatel. Nemohu získat oprávnění potřebná pro přístup k zařízení (/ dev / ttySx). To je trochu mizerný, protože teď nemohu debugovat tu zatracenou věc pomocí Eclipse.
Pokusil jsem se spustit Eclipse pomocí sudo, ale poškodil to můj pracovní prostor a nemohu projekt ani otevřít. Takže bych chtěl vědět, jestli je možné snížit požadavky na přístup k zápisu do / dev / ttySx, aby k němu měl přístup jakýkoli normální uživatel. Je to možné?
Odpověď
Právo na přístup k sériovému portu je určeno oprávněními souboru zařízení (např. /dev/ttyS0
). Takže vše, co musíte udělat, je buď zajistit, aby zařízení vlastnilo vy, nebo (lépe) se dát do skupiny, která zařízení vlastní, nebo (pokud to Fedora podporuje, což si myslím, že ano) zajistit, aby zařízení patří uživateli, který je přihlášen v konzole.
Například v mém systému (nikoli ve Fedoře) je vlastníkem /dev/ttyS0
uživatel root
a skupina dialout
, abych mohl přistupovat k sériovému zařízení, přidal bych se k dialout
skupina:
usermod -a -G dialout MY_USER_NAME
Komentáře
Odpověď
Mnoho distribucí používá členství ve skupinách k povolení přístupu k sériovým portům. Podrobnosti o Fedoře však nevím od ruky.
Odpovědět
Myslím, že se můžete přidat do souboru sudoers, který vám umožní určit sadu příkazů jako alias příkazu, který byste mohli provést bez hesla. Vynikající návod o souboru sudoers najdete v dokumentech Ubuntu .
Potom můžete běžet zatmění normálně a bude „moci provádět tyto konkrétní příkazy bez oprávnění root.
Odpovědět
Toto je stará otázka, ale domnívám se, že mohu přispět, protože k vyřešení mého problému jsem měl další krok. Na tuto otázku jsem přišel při pokusu o připojení k micro: bit na portu / dev / ttyACM0 pomocí Debianu 10.
ls -al /dev/ttyACM0
zobrazí:
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
To naznačuje, proč můžeme přistupovat k portu pomocí sudo – je vlastněn rootem. Ukazuje také, proč přidání uživatele bez oprávnění root do skupiny dialout umožňuje přístup, aniž by byl root. Přidal jsem svůj uživatelský účet do skupiny dialoutů v / etc / group pomocí:
sudo usermod -a -G dialout <user>
Stále se mi nedaří připojit k mikrobitu pomocí monitoru sériového portu bez nutnosti root.
Micro: bit je připojen pod / media:
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
To ukazuje, že adresář na který je připojen micro: bit, vlastní root. Potřeboval jsem změnit vlastníka a skupinu tohoto adresáře na:
„“ „sudo chowner / media / sudo chgrp / media /“ „“
Nyní se mohu připojit k mikro : bit pomocí monitoru sériového portu bez použití sudo.
Odpověď
Tento problém jsem měl také v minulosti, kromě přidání uživatele do skupiny dialout musíte také udělit oprávnění pro přístup tohoto uživatele / dev. jednoduše su -> zadejte heslo root -> chmod -R 777 / dev -R, znamená rekurzivní režim, vše v této složce bude mít stejné oprávnění
problém je v tom, musíte to udělat při každém restartu počítač nebo připojte a odpojte zařízení huh !!!
Komentáře
-
chmod -R 777 /dev
je velmi špatný nápad. - Yaah souhlasím, pokud k tomu existují nějaké další návrhy, bude to skvělé
- zajímalo by mě, jestli se potřebujete odhlásit a znovu přihlásit, jako v komentář k přijaté odpovědi? To často lidi podrazí.
- Poskytování bezplatného přístupu všem uživatelům ke všemu uvnitř / dev / je extrémně nebezpečné. Nedělejte to '.
sudo usermod -a -G dialout $USER
🙂