Como muchos sabeis, en cualquier UNIX todos los dispositivos de un sistema se encuentran representados por un archivo con la excepción de las targetas de red, estos archivos se encuentran en el directorio “/dev/”. En Gentoo actualmente se usa “devfs” para administrar el directorio comentado “/dev”, no es una propiedad de la distribución sinó un sistema virtual que se implementó hace algún tiempo y que quedará obsoleto con la rama 2.6 del kernel linux.
La cuestión es que para poder assignar permisos a los dispositivos (e.g. que solo el usuario X pueda utilizar la grabadora o el dvd) se debe realizar a través de un archivo de configuración (/etc/devfsd.conf) y no directamente con ‘chmod’.
En mi casa tengo una máquina que esta encendida todo el dia y en la cual incluso mi madre tiene un usuario para que pueda navegar, jugar o entretenerse con Gnome. Tiene aplicaciones de sonido para poder reproducir MP3, CDs, etc… por tanto, necesita tener permisos para poder acceder a los dispositivos de sonido que se encuentran en /dev/sound/*, asi que en el archivo de configuración de devfs tenia:
REGISTER sound/.* PERMISSIONS root.audio 660
REGISTER snd/.* PERMISSIONS root.audio 660
El usuario de mi madre al igual que el mio o el de mi hermano pertenece al grupo audio, asi que en principio no habia problema. Pues bien, cada vez que reiniciaba la máquina me encontraba con:
# ls -la /dev/sound/dsp
crw------- 1 root audio 14, 3 ene 1 1970 dsp
Es decir, no teniamos permisos para poder reproducir música. Tenia que hacer yo un chmod manualmente despues de cada reinicio (por suerte no se reinicia casi nunca). Hoy por fin me he puesto a buscar una respuesta y la he encontrado en el foro de gentoo, por lo visto hay un modulo PAM (Pluggable Authentication Modules) que cambia los permisos de ciertos dispositivos, su nombre es ‘pam_console’ y su configuración se encuentra en /etc/security/console.perms:
<console> 0600 <sound> 0600 root.audio
He modificado los primeros permisos:
<console> 0660 <sound> 0600 root.audio
Por lo visto este modulo hace que cuando un usuario entra a su cuenta se le asigna los dispositivos que controla, por ejemplo, si entro con ‘mono’:
$ ls -la /dev/sound/dsp
crw-rw---- 1 mono audio 14, 3 ene 1 1970 /dev/sound/dsp
Como he puesto en la configuración 660, ahora cualquier otro usuario que pertenezca a audio puede reproducir sonido. Como veis el modulo pam hace que el propietario sea el primer usuario que hace login, si este sale hará que el siguiente usuario que entró sea el propietario, como si fuese una FIFO. Personalmente no le doy ninguna utilidad a esta funcionalidad, a decir verdad tampoco la entiendo muy bien, en el archivo de configuración por ejemplo no me queda claro para que es cada cosa, pero al menos he conseguido arreglar de forma lógica lo que necesitaba y he aprendido algo nuevo 😉