Les / skriv til en seriell port uten rot?
On februar 12, 2021 by adminJeg skriver et program for å lese / skrive til / fra en seriell port i Fedora14, og det fungerer bra når jeg kjører det som root. Men når Jeg kjører det som en vanlig bruker, jeg kan ikke oppnå rettighetene som kreves for å få tilgang til enheten (/ dev / ttySx). Det er litt skittent, for nå kan jeg ikke feilsøke den forbaskede tingen ved hjelp av Eclipse.
Jeg har prøvd å kjøre Eclipse med sudo, men det ødelegger arbeidsområdet mitt, og jeg kan ikke engang åpne prosjektet. Så jeg vil gjerne vite om det er mulig å senke tilgangskravene for å skrive til / dev / ttySx slik at alle vanlige brukere kan få tilgang til det. Er dette mulig?
Svar
Retten til tilgang til en seriell port bestemmes av tillatelsene til enhetsfilen (f.eks. /dev/ttyS0
). Så alt du trenger å gjøre er å enten ordne at enheten eies av deg, eller (bedre) plassere deg selv i gruppen som eier enheten, eller (hvis Fedora støtter det, som jeg tror det gjør) sørge for at enheten tilhører brukeren som er logget på konsollen.
For eksempel, på systemet mitt (ikke Fedora) eies /dev/ttyS0
av brukeren root
og gruppen dialout
, så for å kunne få tilgang til den serielle enheten, vil jeg legge meg til dialout
gruppe:
usermod -a -G dialout MY_USER_NAME
Kommentarer
Svar
Mange distribusjoner bruker gruppemedlemskap for å gi tilgang til serielle porter. Jeg vet ikke detaljer om Fedora på forhånd.
Svar
Jeg tror du kan legge deg til i sudoers-filen som vil lar deg spesifisere et sett med kommandoer som kommandoalias som du vil kunne utføre uten passord. Du kan finne en utmerket veiledning om sudoers-filen i Ubuntu-dokumenter .
Du kan da kjøre formørkelse normalt, og den kan utføre de spesifikke kommandoene uten rottillatelser.
Svar
Dette er et gammelt spørsmål, men jeg føler at jeg kan bidra ettersom jeg hadde et ekstra skritt å gjøre for å løse problemet mitt. Jeg kom til dette spørsmålet mens jeg prøvde å koble til en micro: bit på port / dev / ttyACM0 ved hjelp av Debian 10.
ls -al /dev/ttyACM0
viser:
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
Dette indikerer hvorfor vi kan få tilgang til porten ved hjelp av sudo – den eies av root. Det viser også hvorfor å legge til den som ikke er root-bruker i dialout-gruppen, gir tilgang uten å være root. Jeg la til brukerkontoen min i oppringingsgruppen i / etc / group ved hjelp av:
sudo usermod -a -G dialout <user>
Jeg kunne fortsatt ikke koble til mikrobiten bruker en seriell portmonitor uten å være root.
Micro: bit er montert under / media:
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
Dette viser at katalogen at micro: bit er montert på eies av root. Jeg trengte å endre eier og gruppe av denne katalogen til:
«» «sudo chowner / media / sudo chgrp / media /» «»
Nå kan jeg koble til mikroen : bit ved hjelp av en seriell portmonitor uten bruk av sudo.
Svar
Jeg hadde dette problemet også på dagen, bortsett fra legge bruker til en dialout gruppe du trenger også å gi tillatelse for at brukeren får tilgang til / dev. ganske enkelt su -> skriv inn root-passord -> chmod -R 777 / dev -R, betyr rekursiv modus, alt i den mappen vil ha samme tillatelse
problemet er dette, du må gjøre det hver gang du starter på nytt datamaskinen din eller koble til og ut enheten din, ikke sant!
Kommentarer
-
chmod -R 777 /dev
er en veldig dårlig ide. - Yaah er enig, hvis det er noe annet forslag til dette, vil det være bra
- Jeg lurer på om du trengte å logge ut og tilbake igjen, som i kommentar på det aksepterte svaret? Dette snurrer ofte folk opp.
- Å gi gratis tilgang til alle brukere til alt inne / dev / er ekstremt utrygt å gjøre. Vennligst ikke ' ikke gjør dette.
sudo usermod -a -G dialout $USER
🙂