Nuevo driver de broadcom

Tengo en la notebook la placa wireless Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01).

El problema que había hasa hace poco con esta placa era que para funcionar necesitaba o bien un driver libre más firmware no libre, o la utilización de un controlador de windows no libre con ndiswrapper.

Eso hacía algo irritante las instalaciones, ya que lo más habitual era tener que contectarlo a una red cableada y desde ahí bajarse, por ejemplo el firmware. Es cierto, uno podía recurrir a ciertas artimañas, tales como tener el firmware en un pendrive previo a la instalación y luego copiarlo. Aun así, no era lo más cómodo. Recientemente Broadcom sacó un nuevo driver que incluye el dichoso firmware. Mandriva agregó en sus repositorios un paquete llamado dkms-broadcom-wl.

[caption id="attachment_80" align="alignnone" width="300" caption="Nuevo driver de Broadcom funcionando, con el hermoso JuanSe de fondo"]Nuevo driver de Broadcom funcionando, con el hermoso JuanSe de fondo[/caption]

Mientras tanto, Ubuntu Intrepid Ibex ya viene con el driver wl.ko.
La mala noticia: No funciona en primera instancia, ya que pretende usar los drivers  b43 y ssb.

La buena noticia: Esto se puede revertir sin necesidad de bajar ni copiar absolutamente nada. Solamente hay que tocar algunas cosillas del sistema, como muestro a continuación:

  1. Agregar en /etc/modprobe.d/blacklist:
    blacklist ssb
    blacklist b43
  2. Modificar /etc/rc.local para que quede así:
    # Make sure that the script will “exit 0″ on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    modprobe -r ssb
    modprobe -r wl
    modprobe wl
    exit 0

Se debe reiniciar el sistema y listo.

Una presentación sobre sistemas de archivos

Ángel Vilte de la Facultad de la Universidad de la Plata me invitó a dar una charla para un evento de software libre. Las diapositivas de la misma se pueden descargar haciendo clic en filesystems .

Mandriva 2009 y además LPI

Bajé e instalé Mandriva 2009. Probablemente sea la primera distro con una versión de KDE 4.x utilizable. Cosas que me gustaron: la nueva cara del Mandriva Control Center, esa idea tan Mandrake de una distro fácil, amigable y potente a la vez. Otro acierto es el menú de KDE 4 a la antigua.

[caption id="attachment_60" align="alignnone" width="300" caption="Centro de Control de Mandriva"]Centro de Control de Mandriva[/caption]

Lamentablemente tiene las históricas desprolijidades de Mandrake/Mandriva, por ejemplo, algunos mirrors que no funcionan, las vueltas que hay que hacer para reproducir una película de un DVD usando compiz. No es que sea difícil, pero es molesto. Algo que no se entiende es: ¿Por qué no se activan por defecto las configuraciones que funcionan seguro con compiz? ¿Por qué esperar a que el usuario tenga que hacerlo? Otra cosa increíble es que se incluyan herramientas propias de la distribución que no funcionan correctamente. ¿No era mejor excluirla o ponerla en los repositorios de testing? Otra cosa irritante es padecer las falencias de una placa wireless Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01). Y la herramienta de Mandriva para configuración de redes que hace fácil lo difícil, pero también complica lo sencillo, ¿por qué a veces es más complicado conectarse a una red inalámbrica abierta?

Y lo peor, puede ser que la distribución no sea la causante, pero ¿porqué luego de instalar Mandriva la unidad de DVD olvide su configuración de la región?

Bueno, aun así el saldo es positivo, por ahora me gusta esta nueva versión. La recomiendo. Los que no saben nada de Linux que quieran usarla como con cualquier otra distribución, les sugiero que busquen algo que tenga el tiempo y la paciencia para ayudarlos. De hecho lo mismo pasa con Windows: los usuarios no técnicos casi siempre tienen alguien cerca que los asiste.

Invito a votar por la solución de los bugs de Mandriva tales como el 44186.

Ah, además ya tengo la primer certificación LPI, en otro orden de cosas…

Acerca del poder de root y permisos de usuarios y grupos II

Una manera no tan conocida (tal vez por su relativa inmadurez) son las POSIX CAPABILITIES en Linux. Las PCaps permiten asignar determinados permisos a procesos y archivos ejecutables. La idea es evitar el uso del poderoso pero a la vez peligroso SUID Bit.

El archivo  /usr/include/linux/capability.h contiene la descripción definición de las 31 PCaps. Para poder usarlas:

  • Verificar que esta soportado por el kernel

Soporte de PCaps

  • Habilitar KPROBES y compilar si es necesario

Habilitar KPROBES en el kernel

  • Compilar e instalar las nuevas libreras PCAPS

Se trata de la version 2.x de estas libreras que in

cluyen las herramientas setcap y getcap.

  • Cargar el modulo capable_probe

Este módulo es muy importante para comenzar a usar las PCaps e ir aprendiendo como funcionan. De esta manera, podremos ver los mensajes relativas a las PCaps en el archivo /var/log/messages. Hay que tener en cuenta que dicho archivo crecer notablemente, por lo que se recomienda no tener cargado todo el tiempo el módulo capable_probe.

Una de las primeras cosas que se pueden hacer es probar alguna aplicación y ver que capabilities esta usado. Por ejemplo, vemos que el comando at requiere la facultad para realizar diversas tareas administrativas, pasar por el alto el control de acceso discrecional, cambiar propietarios de archivos, manipulación de SUID y SGID bits.
PCaps requeridas

Espero pronto poder escribir algunas cosas ms sobre este apasionante tema.

Acerca del poder de root y permisos de usuarios y grupos

Más allá de lo clásico

El tradicional poder de root en Linux se puede prestar, delegar, fragmentar, etc. mediante distintos métodos. El esquema típico de permisos también se puede ampliar…

Prestando el poder: el comando su

El comando su permite que un usuario haga las veces de otro usuario (generalmente root) ingresando la contraseña de este último. Se puede desde correr un único comando hasta correr una sesión completa como root usando todas sus variables de entorno.  Existe un comando similar llamado sg, que sirve para tomar temporalmente las atribuciones de un grupo. Una diferencia importante es que con sg solamente se registran los intentos fallidos. Además, con sg se hace necesario el uso de las poco utilizadas contraseñas de grupos.

Jun 28 17:56:11 pulperia sg[7865]:\
Invalid password for group `users’ from `sergio’

gksu

Delegando el poder: sudo

La página del manual correspondiente a sudo dice que es un programa diseñado para permitir que el administrador conceda privilegios de root limitados a otros usuarios y registrar su actividad. Si bien sudo tiene una buena cantidad de años, casi tres décadas, se hizo popular hace mucho menos tiempo gracias a Ubuntu. Esta distribución usa sudo de manera predeterminada. Cuando se instala la distribución, se crea un usuario que actuará como “power user”: cada vez que se deba realizar una tarea administrativa se deberá ingresar la contraseña de este usuario calificado. El usuario tendrá además un tiempo de gracia para ejecutar comandos administrativos en la misma terminal.

El archivo de configuración es /etc/sudoers, y una línea típica dice algo así:

¿Qué usuario? ¿Dónde? ¿Cómo qué usuarios? ¿Qué comandos?

Además, se pueden definir alias de usuarios, de usuarios ejecutores, de hosts y de comandos.

User_Alias     DBMASTER = sergio
User_Alias      RANGER = sergio
Runas_Alias    DB = mysql,root
root    ALL=(ALL) ALL
DBMASTER pulperia=(DB) /etc/init.d/mysqld,/usr/sbin/mysql*
RANGER pulperia=(ALL) /usr/bin/tail /var/log/messages,/sbin/reboot,\
/sbin/halt,/sbin/poweroff
Interfaz gráfica para sudo de KDE

Repartiendo el poder: ACLs al estilo POSIX

Recordemos que el esquema en Linux tradicional es UGO (user, group, others)

  • Cada archivo y cada proceso tiene un único usuario dueño
  • Cada archivo y cada proceso tiene un único usuario

Las ACLs al estilo POSIX en Linux se aplican al sistema de archivos y a procesos y permiten extender el enfoque arriba mencionado. De este modo, cada archivo puede contener más de un usuario dueño y/o más de un grupo dueño.

Dolphin y acls

Para sacar provecho de las ACLs es necesario que el sistema de archivos sobre las cuales se quiere aplicar tenga soporte para las mismas.

UUID=831727be-3460-455e-bd1e-200231b2fb84 / \
ext2    relatime,errors=remount-ro,acl,user_xattr 0

Una vez aplicados los cambios, además de los conocidos comandos chmod y chown se pueden usar los comandos setfacl y getfacl.

El comando setfacl permite definir y/o agregar usuarios y permisos.

setfacl -m u:prueba:rw file2

Luego ejecutando ls -l file2 puede informarnos si el archivo tiene acls:

-rw-rwx—+ 1 sergio sergio 0 2008-06-29 18:51 file2

Sin embargo, el comando getfacl es mucho más informativo:

sergio@coldplay:~/testdir$ getfacl file2
# file: file2
# owner: sergio
# group: sergio
user::rw-
user:prueba:rw-
user:burrufini:rwx
group::r-x
group:users:r-x
mask::rwx
other::—

El archivo tiene un dueño (owner) que es sergio, y dos copropietarios (named users) es decir, prueba y burrufini. Asimismo, tiene un grupo dueño que es sergio y un grupo copropietario (named group) que es user. Las máscara (mask) es muy importante ya que pone límite a los permisos de los usuarios copropietarios del grupo propietario y de los grupos copropietarios.

La máscara también se configura con setfacl:

sergio@coldplay:~/testdir$ setfacl -m mask:r-x file2
sergio@coldplay:~/testdir$ getfacl file2
# file: file2
# owner: sergio
# group: sergio
user::rw-
user:prueba:rw-                 #effective:r–
user:burrufini:rwx              #effective:r-x
group::r-x
group:users:r-x
mask::r-x
other::—

Notar lo siguiente:

sergio@coldplay:~/testdir$ chmod g+rw file2
sergio@coldplay:~/testdir$ ls -l file2
-rw-rwx—+ 1 sergio sergio 0 2008-06-29 18:51 file2
sergio@coldplay:~/testdir$ getfacl file2
# file: file2
# owner: sergio
# group: sergio
user::rw-
user:prueba:rw-
user:burrufini:rwx
group::r-x
group:users:r-x
mask::rwx
other::—

Esto quiere decir que al ejecutar chmod para cambiar los permisos del grupo, en realidad se cambiaron los permisos de la máscara. Por lo tanto al usar acls para cambiar o definir los permisos del grupo dueño se debe usar el comando setfacl (setfacl -m group::permisos archivo).

Pero con las acls se puede hacer algo más: se pueden definir que permisos tendrán los archivos creados en un directorio:

sergio@coldplay:~/testdir$ setfacl -m g:users:rw- pepe
# file: pepe
# owner: sergio
# group: sergio
user::rwx
group::r-x
group:users:rw-
mask::rwx
other::—
default:user::rwx
default:group::r-x
default:group:users:r-x
default:mask::r-x
default:other::—

Nautilus y Eiciel

Es importante recordar que en el caso de los archivos (no directorios), no importa que permisos se establezcan por defecto, siempre se aplica el limitante de lectura-escritura como permisos máximos para todos los usuarios, dicho de otra manera, nunca se creará por defecto un archivo con permiso de ejecución habilitado.

Volúmenes lógicos

LVM, la implementación de volúmnes lógicos, sirve para flexibilizar el manejo de particiones y entre otras cosas más para crear instantáneas que pueden usarse con xen.

Para crear un LVM es necesario crear 1 o más PVs (volúmenes físicos). Un PV puede ser la partición de un disco. Uno o más PVs conforman un VG (grupo de volúmenes). Una vez conformado un VG se puede particionar tal como si fuera un disco tradicional. En este caso cada partición es llamada volúmen lógico (LV).

Algunas herramientas de LVM

  • pvcreate: Crea volúmenes físicos
  • vgcreate: Crea un grupo de volúmenes
  • vgchange: Sirve para modificar los atributos de un grupo de volúmenes, por ejemplo para  activar o desactivarlo.
  • vgreduce: Elimina volúmenes físicos.
  • vgextend: Agrega volúmenes físicos a un grupo de volúmenes
  • lvcreate: Crea un volúmen lógico
  • lvextend: Sirve para expandir un volúmen lógico, si se usa ext3, luego hay que usar la herramienta resize2fs. Se puede usar con con el sistema de archivos correspondiente montado.
  • lvreduce: Sirve para achivar un volumen lógico, previamente si usa ext3 hay que usar el comando resize2fs indicando un tamaño coherente con lo que se indica on lvreduce. Por lo que entiendo no puede usar con el sistema de archivos montado
  • Las herramientas vgdisplay, pvdisplay, y lvdisplay muestran respectivamente información de grupos de volúmenes, volúmenes físicos y volúmenes lógicos.
  • lvs: Muestra información resumida de todos los volúmenes lógicos.
  • lvrename: Sirve para cambiarle el nombre a un volumen lógico.

Las líneas en /etc/fstab correspondientes a volúmenes lógicos puede verse así:

/dev/vboxes/mercurio        /mercurio        ext3    defaults    1 2
/dev/vboxes/venus        /venus        ext3    defaults    1 2
/dev/vboxes/marte        /marte        ext3    defaults    1 2

Si bien existen herramientas gráficas, es conveniente conocer los comandos subyacentes.

Lack of communication

Some time ago, I’ve found the atypical fashion of managing permissions. In my job, I was trying to make SecureW2 – a software that provides TTLS to Windows systems – works on Windows Vista. During about a month I was breaking my head against the wall, trying to figure out why on most laptops SecureW2 was failing.

It’s ok, I must admit that I don’t like Windows. At home I use Linux, at work most of the time I use Linux too. You can say that I am a stupid when I tell you why SecureW2 was not working on Vista. SecureW2 was not working because most of users run software as a non-privileged user. So the solution was to click with right button of mouse and then clic in Run as administrator…

What a weird way of security approach, but the worst to me is the strange way of communicate to users. If an action needs more privileges, I thing the right thing is tell the problem to the user and not depend of telepathy. Because of this, I like so much Linux. Linux it’s not a perfect OS, but it tell you when you must run either root or take more privileges.

Privileges

Uno de mis escritorios

Mi escritorio con Wallpaper mostrando diversidadEn la notebook, he instalado Ubuntu Hardy Heron, que me funciona mejor que Mandriva Spring 2008 (no la borré, está en otra partición). Este wallpaper expresa una idea muy constructiva.

El wallpaper se puede bajar de GNOME-LOOK.ORG, los íconos son los black-white 2 Gloss, la decoración de ventanas y los controles es del tema Glossy.

El arte del Linux minimalista

Damn Small Linux es probablemente la mini-distro más conocida, por sus asombrosos 50 Mb conteniendo una cantidad impresionante de aplicaciones. Hace poco descubrí a SliTaz, una distro que parece subir la apuesta de DSL, ya que ocupa alrededor de 24 Mb. Existen dos versiones la estable y la versión en desarrollo (cooking). Bajé e instalé SliTaz en Virtual Box, asignándole solamente 128 Mb de RAM. A pesar de que en su sitio dice que viene con JWM la versión estable usa por defecto LXDE, un el entorno de escritorio que se compone entre otros por un interesante gestor de ventanas llamado Openbox, el bonito y útil LXpanel y el ligero PCManFM.Slitaz mostrando a PCManFM y Firefox Para navegar por Internet propone al ubicuo Firefox (muy ingenioso el script para instalar el plugin de flash) y alternativamente al hasta ahora para mí desconocido para mí retawq, un navegador en modo texto. La herramienta de instalación no está mal y en caso de necesitarse posee el fantástico Gparted para tratar con particiones. SliTaz usa Busybox y trae una herramienta llamada tazpkg, que es de fácil uso para todo aquel que haya empleado apt-get, urpmi o yum. Por si fuera poco viene con Tazlito, un utilitario para crear versiones a medida de la distro. Linda distro para meter en un pendrive.

Compilación en modo gráfico

Clamav

El otro día encontré algo interesante. Como usuario de Linux, el desktop no es un terreno demasiado propicio para virus, por lo tanto los antivirus quedan relegados a un segundo o tercer plano. Sin embargo, husmeando un poco en la configuración de klamav, hallé una opción para bajar una versión actualizada de clamav. Lo más interesante es que baja el código fuente y hace la compilación en modo GUI con asistente. Como ocurre en la mayoría de las compilaciones dejo los archivos por debajo de /usr/local. Que interesante sería encontrar proyectos ofreciendo algo similar.