Citiți / scrieți pe un port serial fără rădăcină?
On februarie 12, 2021 by adminScriu o aplicație pentru a citi / scrie în / dintr-un port serial în Fedora14 și funcționează excelent când îl rulez ca root. Dar când Îl rulez ca utilizator normal. Nu pot obține privilegiile necesare pentru a accesa dispozitivul (/ dev / ttySx). Asta e o prostie pentru că acum nu pot depana de fapt blestemul cu Eclipse.
Am încercat să rulez Eclipse cu sudo, dar îmi corupe spațiul de lucru și nici măcar nu pot deschide proiectul. Deci, aș vrea să știu dacă este posibil să scădem cerințele de acces pentru a scrie pe / dev / ttySx, astfel încât orice utilizator normal să poată accesa. Este posibil acest lucru?
Răspuns
Dreptul de a accesa un port serial este determinat de permisiunile fișierului dispozitiv (de ex. /dev/ttyS0
). Deci, tot ce trebuie să faceți este fie să aranjați ca dispozitivul să fie deținut de dvs., fie (mai bine) să vă puneți în grupul care deține dispozitivul, sau (dacă Fedora îl acceptă, ceea ce cred că face) aranjați ca dispozitivul să fie aparțin utilizatorului care s-a conectat pe consolă.
De exemplu, pe sistemul meu (nu Fedora), /dev/ttyS0
este deținut de utilizatorul root
și grupul dialout
, așa că pentru a putea accesa dispozitivul serial, m-aș adăuga la dialout
grup:
usermod -a -G dialout MY_USER_NAME
Comentarii
Răspuns
Multe distribuții utilizează apartenențe la grup pentru a permite accesul la porturile seriale. Cu toate acestea, nu știu detalii despre Fedora.
Răspuns
Cred că vă puteți adăuga în fișierul sudoers care va vă permite să specificați un set de comenzi ca alias de comandă pe care ați putea să-l executați fără parolă. Puteți găsi un tutorial excelent despre fișierul sudoers în documente Ubuntu .
Puteți rula eclipsa în mod normal și ar putea executa acele comenzi specifice fără permisiuni de root.
Răspuns
Aceasta este o întrebare veche, dar cred că pot contribui, deoarece am mai făcut un pas suplimentar pentru a-mi rezolva problema. Am venit la această întrebare în timp ce încercam să mă conectez la un micro: bit pe port / dev / ttyACM0 folosind Debian 10.
ls -al /dev/ttyACM0
afișează:
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
Acest lucru indică de ce putem accesa portul folosind sudo – este deținut de root. De asemenea, arată de ce adăugarea utilizatorului non-root la grupul dialout permite accesul fără a fi root. Mi-am adăugat contul de utilizator la grupul de apelare din / etc / group folosind:
sudo usermod -a -G dialout <user>
Încă nu m-am putut conecta cu microbitul folosind un monitor de port serial fără a fi root.
Micro: bit este montat sub / media:
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
Acest lucru arată că directorul pe care este montat micro: bit este deținut de root. Trebuia să schimb proprietarul și grupul acestui director în:
„” „sudo chowner / media / sudo chgrp / media /” „”
Acum mă pot conecta la micro : bit folosind un monitor de port serial fără a utiliza sudo.
Răspuns
Am avut această problemă și în acea zi, în afară de adăugarea utilizatorului la un grup dialout de care aveți nevoie, de asemenea, pentru a da permisiunea utilizatorului respectiv să acceseze / dev. pur și simplu su -> introduceți parola de root -> chmod -R 777 / dev -R, înseamnă modul recursiv, totul din acel folder va avea aceeași permisiune
problema este aceasta, trebuie să faceți asta de fiecare dată când reporniți computerul sau conectați-vă și scoateți-vă dispozitivul huh !!!
Comentarii
-
chmod -R 777 /dev
este un idee foarte proastă. - Yaah este de acord, dacă există vreo altă sugestie în acest sens, va fi grozav
- Mă întreb dacă ați trebuit să vă deconectați și să vă conectați din nou, ca în comentați răspunsul acceptat? Acest lucru îi împiedică adesea pe oameni.
- Oferirea accesului gratuit tuturor utilizatorilor la tot ceea ce se află în / dev / este extrem de nesigur. Vă rugăm să nu ' nu faceți acest lucru.
sudo usermod -a -G dialout $USER
🙂