Archive for July, 2010

chown y chgrp, Desambiguando IDs y nombres de usuario

Wednesday, July 28th, 2010

Ya que los argumentos propietario y grupo para chown y chgrp pueden ser especificados como nombres o IDs numéricos, existe una ambiguedad aparente. ¿Qué sucede si un usuario o grupo es una cadena de dígitos? ¿Debería el interprete de comandos interpretarlo como un nombe de usuario o como un ID?.

El estandar POSIX requiere que chown y chgrp primero intenten resolver la cadena especificada como si fuese un nombre, y solo una vez que haya fallado, entonces que intente interpretarlo como un ID. Esto es problemático cuando quieres especificar un ID numérico, digamos 42, y debe funcionar aun en una situación patológica donde ’42′ es el nombre de usuario que dirige a otro ID numérico, digamos 1000. El invocar simplemente chown 42 F, establecería el ID del propietario de F a 1000, no a lo que tu intentaste inicialmente.

Evaluando el problema más detalladamente: si utilizamos 42, como un ID numérico, pero resulta que en mi sistema ya hay un usuario que en vez de ‘juan’ se llama ’42′, pero su ID es 1000. ¿Qué hacemos?

Nota: Utilizar un número como un nombre de usuario es común en algunos ambientes.

chown y chgrp de GNU proveen una manera de evitar esto, que a la vez resulta en una significativa mejora de funcionamiento al eliminar búsquedas en la base de datos (de usuarios). Simplemente precede cada ID numerico y/o grupo con un ‘+’, para forzar su interpretación como un entero.


# chown +42 F
# chgrp +$id_de_grupo_numerico otro-archivo
# chown +0:+0 /

chown y chgrp de GNU saltan el proceso de búsqueda de nombre para cada cadena con prefijo ‘+’, ya que una cadena que contenga ‘+’ nunca sera un nombre de grupo o usuario válido. Esta sintaxis es aceptada en la mayoría de los sistemas Unix comunes. Ojo: a excepción de Solaris 10. [Por suerte usamos Slackware ;) ]

  • Share/Bookmark

Utilización de SlackBuilds

Wednesday, July 21st, 2010

Un SlackBuild es un script (shellscript) que sirve para crear un ‘paquete’ de Slackware Linux, de algún software (php, apache, vsftpd, etc. etc.).

En Slackware Linux no contamos con una serie de repositorios donde alguien ya ha compilado las aplicaciones y preparado paquetes para nosotros (eso es bueno, aunque no lo parezca), sino que tenemos varias opciones para instalar los programas/librerias que no vienen en la distribución por default:

a. Bajar el código fuente, descomprimirlo, e instalarlo manualmente:
./configure
make
make install

b. Escribir un SlackBuild

Si bien es cierto que la primera opción es un poco más rapida, tambien es cierto que es un desastre a la hora de eliminar, actualizar, parchear algun software, porque no vas a saber donde se metio cada archivo que se instaló, y removerlo a mano seria doloroso.

La segunda opción toma un poquito más de tiempo, sin embargo es la recomendada (de hecho, es así como Patrick Volkerdi instala los paquetes en la distribución original de Slackware).

Puedes encontrar numerosos SlackBuilds en slackbuilds.org, o algunos que yo he escrito a medida que he necesitado en: http://packages.eslackware.com

¿Cómo utilizar un SlackBuild?

Supongamos que el SlackBuild que descargas se llama ‘ejemplo-SlackBuild.tar.gz’

- Descomprimelo.
- Descarga el codigo fuente de la aplicacion para el SlackBuild (puedes encontrar informacion en el fichero slack-desc que se crea al descomprimir).
- Edita el script ‘ejemplo.SlackBuild’ para que la parte que habla del PKGNAME y VERSION concuerden con el nombre y version del source que descargaste.
- Ejecuta el SlackBuild como root ( ./ejemplo.SlackBuild )

El paquete sera creado en /tmp/SBo/
Puedes instalarlo como root: intallpkg nombre-paquete

  • Share/Bookmark

Linux PAM en Slackware

Wednesday, July 21st, 2010

Linux PAM (Pluggable Authentication Modules) -Módulos de Autenticación Conectables-

Básicamente, es us mecanismo flexible para autenticar usuarios.

Desde los inicios de UNIX, la tarea de autenticar un usuario ha sido llevada a cabo a travéz del usuario proporcionar una contraseña y el sistema revisa si ésta corresponde a la contraseña oficial que está guardada en /etc/passwd. La idea es que el usuario es realmente ese usuario si (y solo si) puede proporcionar la contraseña correcta.

El problema es que cada vez que un nuevo método de autenticación es desarrollado, requiere que todos los programas necesarios (login, ftpd, etc.) sean reescritos para que puedan soportarlo.

PAM provee una forma de desarrollar programas que sean independientes del esquema de autenticación. Estos programas necesitan ‘módulos de autenticación’ que sean adheridos a estos en tiempo de ejecución para que puedan funcionar. El módulo de autenticación que será adherido es dependiente de la disposición (configuración) local y está a la discreción del administrador local.

Sin más preambulos, les dejo con el SlackBuild que escribí para que puedan instalarlo en su sistema:
http://packages.eslackware.com/slackbuilds/slackware-13.0/l/Linux_PAM-SlackBuild.tar.gz

  • Share/Bookmark

¿Cómo abrir archivos .cab en Linux?

Sunday, July 4th, 2010

Este post va sencillo…

Hoy me vi con la necesidad de abrir ficheros .cab en Linux (CAB es un formato de compresión de Micro$oft), para lo cual, después de investigar un poco, me topé con: cabextract, que es una herramienta para dichos fines.

Del site original tenemos que “cabextract es un Software Libre para extraer ficheros de Microsoft Cabinet, tambien llamados .CAB, en Unix o sistemas operativos tipo Unix. cabextract es distribuido bajo la licencia GPL. Está basado en la librería portable LGPL libmspack. cabextract soporta todas las funcionalidades especiales y todos los formatos de compresión de ficheros Microsoft Cabinet.”

- El webiste oficial es: http://www.cabextract.org.uk/
- He escrito un slackbuild, para crear el paquete en Slackware (13.0 o posterior) en:
http://packages.eslackware.com/slackbuilds/slackware-13.0/c/cabextract-SlackBuild.tar.gz

Espero les sea de utilidad.

  • Share/Bookmark