Lezen / schrijven naar een seriële poort zonder root?
Geplaatst op februari 12, 2021 door adminIk schrijf een applicatie om te lezen / schrijven naar / van een seriële poort in Fedora14, en het werkt geweldig als ik het als root draai. Ik voer het uit als een normale gebruiker. Ik kan niet de rechten verkrijgen die nodig zijn om toegang te krijgen tot het apparaat (/ dev / ttySx). Dat is nogal waardeloos, want nu kan ik het verdomde ding niet echt debuggen met Eclipse.
Ik heb geprobeerd Eclipse uit te voeren met sudo, maar het corrumpeert mijn werkruimte en ik kan het project niet eens openen. Dus ik zou graag willen weten of het mogelijk is om de toegangsvereisten te verlagen om naar / dev / ttySx te schrijven, zodat elke normale gebruiker er toegang toe heeft. Is dit mogelijk?
Answer
Het recht op toegang tot een seriële poort wordt bepaald door de toestemmingen van het apparaatbestand (bijv. div id = “bb6ba7dc28″>
). Het enige dat u hoeft te doen, is ervoor zorgen dat het apparaat uw eigendom is, of (beter) uzelf in de groep plaatsen die eigenaar is van het apparaat, of (als Fedora het ondersteunt, wat ik denk dat het doet) ervoor zorgen dat het apparaat behoren toe aan de gebruiker die is aangemeld op de console.
Op mijn systeem (niet Fedora) is /dev/ttyS0
bijvoorbeeld eigendom van de gebruiker root
en de groep dialout
, dus om toegang te krijgen tot het seriële apparaat, zou ik mezelf toevoegen aan de dialout
groep:
usermod -a -G dialout MY_USER_NAME
Reacties
Antwoord
Veel distributies gebruiken groepslidmaatschappen om toegang tot seriële poorten mogelijk te maken. Ik weet echter niet zomaar details voor Fedora.
Antwoord
Ik denk dat je jezelf kunt toevoegen in het sudoers-bestand dat zal kunt u een reeks opdrachten specificeren als opdrachtalias die u zonder wachtwoord zou kunnen uitvoeren. U kunt een uitstekende tutorial over het sudoers-bestand vinden in Ubuntu-documenten .
Je kunt dan Eclipse normaal draaien en het “d zou in staat zijn om die specifieke commandos uit te voeren zonder root permissies.
Answer
Dit is een oude vraag, maar ik denk dat ik een bijdrage kan leveren omdat ik nog een stap moest zetten om mijn probleem op te lossen. Ik kwam op deze vraag toen ik probeerde verbinding te maken met een micro: bit op poort / dev / ttyACM0 met Debian 10.
ls -al /dev/ttyACM0
toont:
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
Dit geeft aan waarom we toegang kunnen krijgen tot de poort met sudo – het is eigendom van root. Het laat ook zien waarom het toevoegen van de niet-rootgebruiker aan de uitbelgroep toegang toestaat zonder root te zijn. Ik heb mijn gebruikersaccount toegevoegd aan de uitbelgroep in / etc / group met behulp van:
sudo usermod -a -G dialout <user>
Ik kon nog steeds geen verbinding maken met de microbit een seriële poortmonitor gebruiken zonder root te zijn.
De micro: bit is gemount onder / media:
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
Dit toont aan dat de directory waarop de micro: bit is aangekoppeld, is eigendom van root. Ik moest de eigenaar en groep van deze map wijzigen in:
“” “sudo chowner / media / sudo chgrp / media /” “”
Nu kan ik verbinding maken met de micro : bit met behulp van een seriële poortmonitor zonder sudo te gebruiken.
Answer
ik had dit probleem ook vroeger, afgezien van Als u een gebruiker toevoegt aan een dialout -groep, moet u die gebruiker ook toestemming geven voor toegang tot / dev. simpelweg su -> voer root-wachtwoord in -> chmod -R 777 / dev -R, betekent recursieve modus, alles in die map heeft dezelfde toestemming
het probleem is dit, je moet dat elke keer doen als je opnieuw opstart je computer of plug je apparaat in en uit huh !!!
Reacties
-
chmod -R 777 /dev
is een heel slecht idee. - Ja, ga akkoord, als er een andere suggestie voor is, zal dat geweldig zijn
- Ik vraag me af of je moet uitloggen en weer moet inloggen, zoals in de opmerking op het geaccepteerde antwoord? Dit doet mensen vaak struikelen.
- Het is buitengewoon onveilig om alle gebruikers gratis toegang te geven tot alles in / dev /. Gelieve ' niet te doen.
sudo usermod -a -G dialout $USER
🙂