Læs / skriv til en seriel port uden rod?
On februar 12, 2021 by adminJeg skriver et program til at læse / skrive til / fra en seriel port i Fedora14, og det fungerer godt, når jeg kører det som root. Men når Jeg kører det som en normal bruger, jeg er ikke i stand til at opnå de rettigheder, der kræves for at få adgang til enheden (/ dev / ttySx). Det er lidt skørt, for nu kan jeg faktisk ikke fejle den forbandede ting ved hjælp af Eclipse.
Jeg har prøvet at køre Eclipse med sudo, men det ødelægger mit arbejdsområde, og jeg kan ikke engang åbne projektet. Så jeg vil gerne vide, om det er muligt at sænke adgangskravene til at skrive til / dev / ttySx, så enhver normal bruger kan få adgang til det. Er dette muligt?
Svar
Retten til at få adgang til en seriel port bestemmes af enhedsfilens tilladelser (f.eks. /dev/ttyS0
). Så alt hvad du skal gøre er at enten sørge for, at enheden ejes af dig, eller (bedre) placere dig selv i den gruppe, der ejer enheden, eller (hvis Fedora understøtter det, hvilket jeg tror det gør) sørge for, at enheden tilhører den bruger, der er logget ind på konsollen.
For eksempel på mit system (ikke Fedora) ejes /dev/ttyS0
af brugeren root
og gruppen dialout
, så for at få adgang til den serielle enhed, vil jeg føje mig til dialout
gruppe:
usermod -a -G dialout MY_USER_NAME
Kommentarer
Svar
Mange distributioner bruger gruppemedlemskaber til at muliggøre adgang til serielle porte. Jeg kender dog ikke detaljer til Fedora offhand.
Svar
Jeg tror, du kan tilføje dig selv i sudoers-fil, som vil giver dig mulighed for at angive et sæt kommandoer som kommandealias, som du ville være i stand til at udføre uden adgangskode. Du kan finde en fremragende tutorial om sudoers-fil i Ubuntu-dokumenter .
Du kan derefter køre formørkelse normalt, og den kunne udføre de specifikke kommandoer uden rodtilladelser.
Svar
Dette er et gammelt spørgsmål, men jeg føler, at jeg kan bidrage, da jeg havde et yderligere skridt til at løse mit problem. Jeg kom til dette spørgsmål, mens jeg forsøgte at oprette forbindelse til en micro: bit på port / dev / ttyACM0 ved hjælp af 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å adgang til porten ved hjælp af sudo – den ejes af root. Det viser også, hvorfor tilføjelse af ikke-root-bruger til dialout-gruppen giver adgang uden at være root. Jeg tilføjede min brugerkonto til dialout-gruppen i / etc / group ved hjælp af:
sudo usermod -a -G dialout <user>
Jeg kunne stadig ikke oprette forbindelse til microbit ved hjælp af en seriel portmonitor uden at være root.
Micro: bit er monteret under / media:
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
Dette viser, at kataloget at micro: bit er monteret på ejes af root. Jeg var nødt til at ændre ejeren og gruppen af denne mappe til:
“” “sudo chowner / media / sudo chgrp / media /” “”
Nu kan jeg oprette forbindelse til mikro : bit ved hjælp af en seriel portmonitor uden brug af sudo.
Svar
Jeg havde dette problem også tilbage på dagen bortset fra tilføje bruger til en dialout gruppe skal du også give tilladelse til den bruger til at få adgang til / dev. simpelthen su -> indtast rodadgangskode -> chmod -R 777 / dev -R, betyder rekursiv tilstand, alt inden for den mappe har samme tilladelse
problemet er dette, du skal gøre det hver gang du genstarter din computer eller tilslut din enhed, og hør !!!
Kommentarer
-
chmod -R 777 /dev
er en meget dårlig idé. - Yaah er enig, hvis der er noget andet forslag til dette, vil det være godt
- Jeg spekulerer på, om du har brug for at logge ud og igen, som i kommentar på det accepterede svar? Dette snubler ofte folk op.
- At give gratis adgang til alle brugere til alt inden i / dev / er ekstremt usikkert at gøre. Venligst ' t gør dette.
sudo usermod -a -G dialout $USER
🙂