Sí, puede escribir una regla udev.
En /etc/udev/rules.d
hacer un archivo 30-mydevice.rules
(el número debe ser del 0 al 99 y decide solo sobre el orden de ejecución del script; el nombre realmente no importa, solo debe ser descriptivo; .rules
sin embargo, se requiere extensión)
En este ejemplo, asumo que su dispositivo está basado en USB y sabe que es el proveedor y la identificación del producto (se puede verificar usando lsusb -v
), y estás usando mydevice
grupo en el que debe estar su usuario para usar el dispositivo. Este debería ser el contenido del archivo en ese caso:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0123", SYSFS{idProduct}=="4567", ACTION=="add", GROUP="mydevice", MODE="0664"
MODE
igual a 0664 permite que el propietario (probablemente root) y el grupo definido escriban en el dispositivo.
Una forma es agregar al usuario al "grupo de dispositivos" correspondiente. Hay toda una gama de grupos para varios tipos de dispositivos (disco, disquete, tty, video, cdrom, ...) bajo Linux, por lo que puede agregar el usuario al grupo correspondiente en /etc/group
.
Otra forma es crear un "pseudo-usuario" (por ejemplo, el usuario de juegos). Agrega este usuario a los grupos de dispositivos que debería tener. Finalmente, cambia el propietario de ciertos programas (como un programa para escanear imágenes) a este usuario y establece chmod u+s
. Esto hará que el programa se ejecute como el pseudousuario, no como el usuario real, por lo que tendrá acceso a los dispositivos. Puede usar el grupo de programas para limitar qué usuario puede ejecutar el programa.
Finalmente, puede configurar el grupo de programas que necesitan un dispositivo específico para el grupo de dispositivos y configurar chmod g+s
. Esto hará que el programa se ejecute con los derechos del grupo (además de los derechos del usuario normal que lo ejecuta), lo que permitirá un acceso extendido al dispositivo.