¿Leer / escribir en un puerto serie sin raíz?

31

Estoy escribiendo una aplicación para leer / escribir en / desde un puerto serie en Fedora14, y funciona muy bien cuando la ejecuto como root. Pero cuando lo ejecuto como un usuario normal, no puedo obtener los privilegios necesarios para acceder al dispositivo (/ dev / ttySx). Eso es un poco horrible porque ahora no puedo depurar la maldita cosa usando Eclipse.

Intenté ejecutar Eclipse con sudo pero daña mi espacio de trabajo y ni siquiera puedo abrir el proyecto. Por lo tanto, me gustaría saber si es posible reducir los requisitos de acceso para escribir en / dev / ttySx para que cualquier usuario normal pueda acceder a él. es posible?

iegod
fuente

Respuestas:

46

El derecho a acceder a un puerto serie está determinado por los permisos del archivo del dispositivo (por ejemplo /dev/ttyS0). Entonces, todo lo que necesita hacer es organizar que el dispositivo sea de su propiedad, o (mejor) ponerse en el grupo que posee el dispositivo, o (si Fedora lo admite, lo que creo que lo hace) hacer arreglos para que el dispositivo pertenecer al usuario que inició sesión en la consola.

Por ejemplo, en mi sistema (no Fedora), /dev/ttyS0es propiedad del usuario rooty del grupo dialout, por lo que para poder acceder al dispositivo serie, me agregaría al dialoutgrupo:

usermod -a -G dialout MY_USER_NAME
Gilles 'SO- deja de ser malvado'
fuente
1
Voy a aceptar este ya que me llevó por el camino correcto. Para Fedora, el comando usermod se usa después de crear un usuario. El grupo en cuestión también fue marcado para mí: sudo usermod -a -G dialout <nombre de usuario>. Aclamaciones.
iegod
55
Tenga en cuenta que es posible que deba cerrar sesión e iniciar sesión para aparecer en el nuevo grupo
Jan Špaček
1
Por demanda popular: sudo usermod -a -G dialout $USER:-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
0

Muchas distribuciones usan membresías grupales para permitir el acceso a puertos serie. Sin embargo, no conozco detalles de Fedora.

geekosaur
fuente
0

Creo que puede agregarse en el archivo sudoers que le permitirá especificar un conjunto de comandos como alias de comando que podría ejecutar sin contraseña. Puede encontrar un excelente tutorial sobre el archivo sudoers en los documentos de Ubuntu .

Luego puede ejecutar eclipse normalmente y podrá ejecutar esos comandos específicos sin permisos de root.

Deepak Mittal
fuente
-2

Tuve este problema también en el pasado, además de agregar un usuario a un grupo de marcado , también debe dar permiso para que ese usuario acceda / dev. simplemente su -> ingrese la contraseña de root -> chmod -R 777 / dev -R, significa modo recursivo, todo dentro de esa carpeta tendrá el mismo permiso

el problema es este, debe hacerlo cada vez que reinicie su computadora o conecte y desconecte su dispositivo, ¡eh!

Tunu Yolim Ngajilo
fuente
3
chmod -R 777 /devEs una muy mala idea.
RalfFriedl
Yaah está de acuerdo, si hay alguna otra sugerencia para esto, será genial
Tunu Yolim Ngajilo
Me pregunto si necesita cerrar sesión y volver a iniciarla, como en el comentario sobre la respuesta aceptada. Esto a menudo hace tropezar a las personas.
sourcejedi
Dar acceso gratuito a todos los usuarios a todo lo que está dentro / dev / es extremadamente inseguro. Por favor no hagas esto.
Unfa