Category Archives: Topic

Permisos dispositivos /dev/

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 😉

Squirrelmail 1.4.3-RC1 y codificaciones

En Gentoo ya es estable la versión 1.4.3-RC1 de Squirrelmail con la cual no funcionan mis modificaciones para poder leer bien el correo que me llegue codificado con UTF-8, asi que tengo que volver a utilizar Evolution. Esto de las codificaciones es un engorro, por ejempo cuando entro en el IRC con BitchX hay unos cuantos que tienen configurado su cliente para que envien UTF-8 en lugar de ISO-8859-1, por tanto yo no veo bien sus acentos y tengo que cambiar la configuración de la terminal. No es nada practico, se tendria que dar un salto: todos UTF-8 o nadie, ya que de lo contrario lo único que se consiguen son problemas e impide utilizar ciertas aplicaciones o se convierte en un problema más que una solución.

Lo más curioso es que tengo problemas con personas de mi misma “cultura”, es decir, no necesitan UTF-8 para nada ya que con ISO-8859-1 tienen todos los caracteres que necesitan, pero en cambio se empezan a utilizarlo 🙁 Curioso que algo que deberia utilizarse para permitir la comunicación entre diferentes culturas, acabe fastidiando a 1 única cultura internamente.

Cuando digo mi “cultura” me refiero a aquellos con los que me comunico en Castellano o Catalán.

Envio de archivos con gaim protocolo jabber desde red local

Ya he conseguido que funcione el envio de archivos con gaim y protocolo jabber. Con la ayuda del sniffer Ethereal he observado como funciona el protocolo jabber para el envio de archivos y he visto que el que intenta enviar un archivo realiza una petición similar a:

<query xmlns='http://jabber.org/protocol/bytestreams' sid='XXXXXXX'>
  <streamhost jid='Marble@bulmalug.net/Gaim' host='192.168.0.5' port='5500'/>
</query>

Como se puede observar esta diciendo que se conecte al puerto 5500, ip 192.168.0.5!!! Es decir, da la ip interna de la red local a los usuarios que estan en internet que por supuesto no se van a poder conectar, deberia dar la ip pública. Para solucionarlo en el gaim vamos a Herramientas -> Preferencias -> Red, se desactiva autodetectar y donde se especifica la IP Pública he puesto un dominio dinámico que se actualiza cada vez que me conecto a internet. En el rango de puertos he puesto entre 5500 y 5502, por supuesto he hecho que el firewall (iptables) del gateway de mi red redirija esos puertos a mi màquina y que el firewall de mi màquina acepte el trafico.

A continuación se puede ver que la petición jabber envia el host que apunta a mi IP:

<query xmlns='http://jabber.org/protocol/bytestreams' sid='XXXXXXX'>
  <streamhost jid='Marble@bulmalug.net/Gaim' host='hostvirtual.homeip.net' port='5500'/>
</query>

Quien tenga ip dinámica como yo y quiera un dominio que apunte siempre a su ip (se ha de actualizar cada vez que se realiza una nueva conexion a internet) puede conseguirlo en dyndns y usar ddclient para actualizar la ip de forma automàtica.

Os pongo las reglas del firewall iptables por si a alguien le interesa:

En el gateway que tiene acceso a internet:

$IPTABLES -t filter -A INPUT -i $INTERNET_INTERFACE -p tcp --dport 5500:5502 -j ACCEPT
$IPTABLES -t nat -I PREROUTING 1 -i $INTERNET_INTERFACE -p tcp --dport 5500:5502 -j DNAT --to-dest 192.168.0.5
$IPTABLES -I FORWARD 1 -p tcp -i $INTERNET_INTERFACE --dport 5500:5502 -d 192.168.0.5 -j ACCEPT

En el ordenador donde se ejecutara gaim configurado para que escuche en los puertos 5500-5502:

$IPTABLES -t filter -A INPUT -i $LAN_INTERFACE -p tcp --dport 5500:5502 -j ACCEPT

Gaim 0.77: Envio de ficheros

Con gaim 0.77 ya es posible enviar y recibir archivos con el protocolo jabber 🙂 Lastima que yo no consigo enviar nada por culpa de la configuración de mi red, lo malo es que no acabo de entender pq no funciona ya que lo he llegado a probar con el firewall totalmente desactivado. Si he conseguido recibir ficheros 🙂

Hacia mucho tiempo que se echaba de menos esta funcionalidad en Gaim y ahora por fin podemos disfrutarlo 🙂

Gnome 2.6.0

Por fin tengo gnome 2.6.0 en mi Gentoo… primeras impresiones? Decepcionante, a los 2 minutos colgué el nautilus teniendo que cerrar la sesión y volver a entrar. En la segunda oportunidad, tenia habierto el gedit mientras usaba nautilus y sin razón aparente me petó gedit 😕

Cosas positivas, interesante la estructura del nuevo nautilus aunque no me acabo de acostumbrar a que habra una nueva ventana por cada directorio. Sftp integrado en gnome-vfs y por tanto se puede conectar con cualquier maquina que tenga ssh y listar los ficheros en nautilus. Applet monitor de red, ya es posible saber la IP de la interficie con un click 😉 Y poca cosa más… habra que ver si en la 2.6.1 se han solucionado los bugs que parece tener esta versión.

La pastilla roja

Ayer me compre en Barcelona el libro “La pastilla roja” de Alfredo Romero y Juantomás García. En verano espero leermelo ya que ahora estoy demasiado ocupado, lo que me ha sorprendido gratamente es que aparece un listado de LUGs nacionales y aparece GPL Tarragona 🙂 Lastima que no apareciesemos también en el listado que venia incluido en el CD de “Programari de lliure distribució” que regalo el Periodico de Catalunya hace unas semanas, aparecian otros grupos catalanes menos el nuestro 🙁

Patentes en Europa

Dia triste para los programadores europeos, la propuesta sobre patentes de software ha sido aprobada y ahora pasará a una segunda lectura en el parlamento europeo. No es definitiva la propuesta, pero si es un paso adelante para tener patentes de Software al mismo estilo que EEUU y ya todos conocemos lo dañinas que son excepto para las grandes empresas.

España ha votado en contra cosa que me alegra muchisimo aunque me apena que no haya sido suficiente. Como muchos señalan en barrapunto, las elecciones europeas se acercan y se debe aprovechar para presionar a los partidos políticos.

El software libre puede salir seriamente perjudicado en Europa de acabar aprobandose dicha propuesta, hispalinux tiene todo un proyecto dedicado a proporcionar información sobre patentes de Software.