En un sistema tipo UNIX, los periféricos se representan mediante un fichero, en el directorio /dev , por lo tanto para poder acceder y comunicarnos con el periférico es necesario que dispongamos de los permisos adecuados. Es común encontrarse que nuestro usuario no tenga acceso a los puertos. Para hacer un ejemplo practico, en mi caso tengo una placa Arduino Nano, que se conecta por el puerto USB, y la misma no es reconocida por el IDE. Primero identifico que fichero tiene asociado, conecto la placa y ejecuto el siguiente comando:
$ dmesg | tail
El comando dmesg, devuelve los mensajes del Kernel, y tail solo me muestra los últimos cambios. Se ve que el fichero asociado es ttyUSB0, podemos ver los permisos del mismo de la sig manera:
$ls -l /dev/ttyUSB0
Solo el usuario root, y los pertenecientes al grupo “dialout” tienen permisos para abrir y escribir, mientras que el resto de los usuarios no tiene ningun permiso. Lo que podemos hacer es agregar nuestro usuario a tal grupo con el siguiente comando(como superusuario):
# usermod -G dialout <usuario>
Listo ya podemos jugar con el puerto.
Otra opcion podria ser cambiar los permisos del archivo para el resto de los usuarios:
# chmod o+rw /dev/ttyUSB0
Pero esto lo tendríamos que realizar cada vez que conectemos el periférico. La primer opción es un cambio permanente(hasta que salgamos del grupo)