Leggere / scrivere su una porta seriale senza root?
Su Febbraio 12, 2021 da adminSto scrivendo unapplicazione per leggere / scrivere su / da una porta seriale in Fedora14 e funziona benissimo quando la eseguo come root. Ma quando Lo eseguo come un normale utente Non riesco a ottenere i privilegi necessari per accedere al dispositivo (/ dev / ttySx). È un po schifoso perché ora non posso “eseguire il debug di quella dannata cosa usando Eclipse.
Ho provato a eseguire Eclipse con sudo ma corrompe il mio spazio di lavoro e non posso nemmeno aprire il progetto. Quindi mi piacerebbe sapere se è possibile abbassare i requisiti di accesso per scrivere in / dev / ttySx in modo che qualsiasi utente normale possa accedervi. È possibile?
Risposta
Il diritto di accedere a una porta seriale è determinato dai permessi del file del dispositivo (ad esempio /dev/ttyS0
). Quindi tutto ciò che devi fare è organizzare che il dispositivo sia di tua proprietà, o (meglio) metterti nel gruppo che possiede il dispositivo, o (se Fedora lo supporta, cosa che penso lo faccia) organizzare che il dispositivo appartengono allutente che ha effettuato laccesso alla console.
Ad esempio, sul mio sistema (non Fedora), /dev/ttyS0
è di proprietà dellutente root
e il gruppo dialout
, quindi per poter accedere al dispositivo seriale, mi aggiungerei al dialout
gruppo:
usermod -a -G dialout MY_USER_NAME
Commenti
Risposta
Molte distribuzioni utilizzano lappartenenza a gruppi per abilitare laccesso alle porte seriali. Non conosco i dettagli per Fedora improvvisamente, però.
Risposta
Penso che tu possa aggiungere te stesso nel file sudoers che sarà consentono di specificare una serie di comandi come alias di comando che saresti in grado di eseguire senza password. Puoi trovare un eccellente tutorial sul file sudoers in Ubuntu docs .
Puoi quindi eseguire eclipse normalmente e “d essere in grado di eseguire quei comandi specifici senza permessi di root.
Risposta
Questa è una vecchia domanda, ma sento di poter contribuire in quanto avevo un ulteriore passaggio da fare per risolvere il mio problema. Sono arrivato a questa domanda mentre cercavo di connettermi a un micro: bit sulla porta / dev / ttyACM0 usando Debian 10.
ls -al /dev/ttyACM0
visualizza:
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
Questo indica perché possiamo accedere al port usando sudo – è di proprietà di root. Mostra anche perché laggiunta dellutente non root al gruppo dialout consente laccesso senza essere root. Ho aggiunto il mio account utente al gruppo dialout in / etc / group utilizzando:
sudo usermod -a -G dialout <user>
Non riuscivo ancora a connettermi con il microbit utilizzando un monitor della porta seriale senza essere root.
Il micro: bit è montato in / media:
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
Questo mostra che la directory su cui è montato il micro: bit è di proprietà di root. Avevo bisogno di cambiare il proprietario e il gruppo di questa directory in:
“” “sudo chowner / media / sudo chgrp / media /” “”
Ora posso collegarmi al micro : bit utilizzando un monitor della porta seriale senza utilizzare sudo.
Risposta
ho avuto questo problema anche nel corso della giornata, a parte aggiungendo un utente a un gruppo dialout è necessario anche dare il permesso a quellutente di accedere a / dev. semplicemente su -> inserisci la password di root -> chmod -R 777 / dev -R, significa modalità ricorsiva, tutto allinterno di quella cartella avrà la stessa autorizzazione
il problema è questo, devi farlo ogni volta che riavvii il computer o collega e scollega il dispositivo eh !!!
Commenti
-
chmod -R 777 /dev
è un pessima idea. - Yaah daccordo, se cè qualche altro suggerimento per questo, sarà fantastico
- Mi chiedo se avessi bisogno di disconnetterti e riconnettersi, come nel commento sulla risposta accettata? Questo spesso fa inciampare le persone.
- Dare accesso gratuito a tutti gli utenti a tutto ciò che è allinterno di / dev / è estremamente pericoloso. Si prega di non ' farlo.
sudo usermod -a -G dialout $USER
🙂