HowTo: Cómo usar sed para actualizar mis zonas de DNS

Hoy, se me ocurrió que sería buena idea actualizar 120 zonas de dns que tengo.

Quería asegurarme de que mis DNS esclavos tuvieran la última versión de mis zonas. Así que, sed me ayudó:

sed -i s/[[:digit:]]\\{10\\}/2011012000/g /var/named/*.db

Éste código buscó las cadenas de dígitos de 10 caracteres y los substituyó por otra cadena de 10 caracteres.

Problema resuleto.

Una explicación breve:

[[:digit:]] representa los dígitos del 0-9
\{10} le dice que sean 10 instancias de dígitos del 0-9
hay dobles \ porque son necesarias en bash para escapar los \. El código de la expresión regular original sería:

s/[:digit:]\{10\}/2011012000/g

Pero, como bash necesita que escape los \

s/[[:digit:]]\\{10\\}/2011012000/g

La neta, lo de la [[ no lo entiendo… pero así jaló. Habrá que esperar comentarios de los aborígenes wwwnautas.

HowTo: Cómo resetear bacula?

Hay una bronca; resetear bacula! Es una weba. Hay que apagar como mil servicios y borrar unas madres y bla bla bla…

Ahí les va un script, para webones como yo! Ponlo en /usr/local/libexec/bacula y lo corres con su -c ‘/usr/local/libexec/bacula/resetBacula’

#!/bin/bash

# check if it's the authorized user; which is the local user.
if [ $(id -u) != 0 ]; then
echo -e "Córrelo como root! O, también, puedes usar su -c 'resetBacula'"
exit 1
fi

# stop bacula
echo "Stopping bacula..."
service bacula-dir stop
service bacula-fd stop
service bacula-sd stop

# reset DB
echo -e "\nReseting DB..."
/usr/libexec/bacula/drop_mysql_database
/usr/libexec/bacula/create_mysql_database
/usr/libexec/bacula/make_mysql_tables

# remove state and bsr files
echo -e "\nRemoving state and bsr files..."
rm -f /var/spool/bacula/*.{bsr,state}

# remove backup volumes
echo -e "\nRemoving volume files..."
rm -f /var/backup/bacula/*

# restart bacula
echo -e "\nRestarting bacula..."
service bacula-sd start
service bacula-fd start
service bacula-dir start

exit 0

Permisos recomendados:
su -c ‘chmod 1700 /usr/local/libexec/bacula/resetBacula’

GPLv3 all the way, my friends! Úsenlo y háganle lo que se les inche…

Raphaël: Framework para SVG en JavaScript

No me gusta el javascript… es una porquería…

Dicho ésto, me encontré un magnífico framework para manipular SVG de manera sencilla.

Me gusta mucho la idea de que funciona en varios navegadores como: Firefox 3.0+, Safari 3.0+, Chrome 5.0+, Opera 9.5+ e Internet Explorer 6.0+.

Además, los demos están geniales! Ya hasta me dieron ganas de usarlo.

Otra cosa increible: no necesitas ningún tipo de plugin. Además, pudiéramos hacer cosas como mapas interactivos, y cosas de esas con ésta cosa.

Se me ocurre que pudiéramos vectorizar (con Inkscape) el mapa de México a gran detalle, no crees?

Lo bonito de usar vectores es que no se pixelea ni madres. Además, pudiéra generar una GUI excelente para mi sitio… si encuentro la creatividad.

Me avisas si la encontraste: http://raphaeljs.com/

HowTo: WHMCS y SELinux

Al parecer, WHMCS necesita usar whois…

Bueno, para que no tengas que apagar SELinux, solo:

su -c 'setsebool -P httpd_can_network_connect on'

Ésto permitirá, a apache, conectarse al puerto 43.

Nota sobre iptables

En Fedora, todas las conexiones iniciadas desde el servidor a cualquier puerto, están permitidas. No hay que agregar ninguna regla.

He visto muchos posts pidiéndote que abras el puerto 43… ésto es ridículo. La gente permite la entrada del puerto y, lo que importa; en este caso, es la salida de puerto; la cual ya está permitida por default.

HowTo: Micro-intro a SELinux

He visto, para mi pesar, muchas soluciones de “chmod 777 / -R” y estupideces por el estilo.

La gran mayoría de éstos vienen de usuarios que no saben ni qué onda; generalmente ubunteros inexpertos y no propensos a leer y a saber cómo están las cosas.

Te pido que no empieces con estas soluciones. En Fedora, seguido, debemos checar si SELinux no está impidiéndonos hacer algo y asignar la etiqueta necesaria para poder hacerlo.

SELinux nos impide hacer cosas cuando las hacemos mal; por ejemplo, poner archivos de samba en /home/samba o una página web en /home/miuser/paginas

Te recuerdo que existe el Filesystem Hierarchy Standard o HFS. Búscalo y entérate de los mejores lugares para poner las cosas.

SELinux en Fedora viene pre-configurado para permitir acceso de los daemonios solo en las carpetas reglamentadas por el FHS; por ejemplo:

Las páginas web van en /var/www
Los respaldos en /var/backup
Las DBs en /var/lib/
Los archivos de usuario en /home
Las librerías en /usr/lib, /usr/lib64, /lib, /usr/local/lib, etc.

Dicho ésto, algunas veces debes re-etiquetar algunas cosas por motivos ajenos a la distribución. Un ejemplo de esto es cuando instalas o desarrollas una aplicación web que necesita escribir en algún directorio o algún archivo. Para esto, existe una etiqueta: httpd_sys_content_rw_t; la cual permite, a apache, que escriba sobre un directorio y/o archivo específico.

Para configurar esto de manera temporal; mientras pruebas, usa:

su -c 'chcon httpd_sys_content_rw_t /var/www/websites/miapp/tmp'

Pero, cuando re-etiquetes, perderás esta etiqueta si no creas la política con semanage:

su -c 'semanage fcontext -a -t httpd_sys_content_rw_t /var/www/websites/miapp/tmp'

Una vez hecho ésto, solo haz un

su -c 'restorecon -R /var/www/websites/miapp/tmp'

para que se re-etiqueten los archivos debajo de ese directorio.

Para remover tu política, solo:

su -c 'semanage fcontext -d /var/www/websites/miapp/tmp'

Y no olvides re-etiquetar.

Si aprendes algo del FHS, no tendrás tantos problemas con SELinux. Y, por cierto, NO LO APAGUES! APRÉNDELO!

Debes leer mucho más al respecto de esto si lo quieres usar. Recuerda que SELinux es otra capa de protección/regulación. Debes tomar en cuenta el sistema de permisos de GNU & Linux y, además, los permisos avanzados.

# Páginas de referencia

http://www.pathname.com/fhs/

http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux

http://en.wikipedia.org/wiki/Filesystem_permissions

http://en.wikipedia.org/wiki/Setuid

http://en.wikipedia.org/wiki/Sticky_bit

http://en.wikipedia.org/wiki/Access_control_list

http://acl.bestbits.at/

http://en.wikipedia.org/wiki/Extended_file_attributes

HowTo: Cómo reestablecer permisos en GNU & Linux

Eres nuevo y/o estás jugando con los permisos y los ownerships y te has metido en un mega-problemón porque ya no sabes qué hiciste…

No hay toz, Saint Bash y Saint RPM nos vinieron a ayudar.

Es muy fácil reestablecer los permisos de un paquete y su dueño; solo:

su -c 'rpm --setperms --setugids '

Por ejemplo, digamos que quieres reestablecer los permisos de phpMyAdmin:

su -c 'rpm --setperms --setugids phpMyAdmin'

Pero… y… si son un chingo de paquetes? Muy fácil: (actualmente, me costó un buen rato!)

su -c 'rpm --setperms --setugids $( rpm -qa --qf "%{NAME} " *zarafa* )'

Problemas con Fedora como Gateway/Router y NetworkManager

Ayer, tuve una mega-bronca.

Resulta que puse el una PC con Fedora 14 como gateway. Para ser más claro, le conecté un modem de infínitum (en modo puente) y, por la otra NIC, le pasaba internet y servicios de red (dhcp, bind, samba) a la red.

Se me ocurrió hacerlo en init 5 y usando NetworkManager para hacer la conexión pppoe.

Bueno, la conexión funcionaba de maravilla y fue taaaan fácil de configurar.

La bronca fue que, al compartir el internet (poner masquerade en la ppp y habilitar forwarding), solo podía ver páginas de google en la red…

Estuvo bien loco porque el ping respondía y todo parecía normal… nomás no se veían varias páginas…

No era el DNS… no era el DHCP… no era nada… todo estaba bien…

No supe qué pasó…

Decidí reconfigurar todo a la manera tradicional (hacer un archivo ifcfg-ppp y poner todo ahí) y funcionó a la primera!

Qué pasó? Porqué el maldito NetworkManager no creó un archivo ifcfg-X cuando le puse que la conexión debía ser usada por todo el mundo? No lo sé… Así lo hace con los ethX…

Bueno, solo para avisarles a todos. No usen NetworkManager para hacer un Gateway… todavía… voy a reportar el bug.

HowTo: Como hacer para omitir archivos en bash

Bueno, leyendo el manual de Bash, me encontré con una sección muy chida: Pattern Matching

Si haces el comando:

yelp info:bash

Y, después, vas a la sección: Basic Shell Features > Shell Expansions > Filename Expansion > Pattern Matching eoncontrarás que puedes hacer omisiones y muchas otras cosas!

Acá, explico cómo hacer una omisión.

Digamos que tienes un montón de archivos ogg y quieres conservarlos. Pero, como te los trajiste de Windoze, tendrás que eliminar un montón de cosas (.ini, .jpg. .JPG, etc)

Cómo los borras?

Muy fácil:

rm !(*.ogg)

Ahora, digamos que quieres retener los archivos .txt junto con los .ogg, muy fácil:

rm !(*.ogg|*.txt)

Y listo! Ahora te toca aportar otros ejemplos útiles a la comunidad!

Haz tu vida fácil en Fedora!

Yo he estado haciendo un script para ahorrarle problemas a la gente. Mi script instala flash y se encarga de codecs, 3D y demás ondas.

Bueno, ahora vi que hay una persona que está haciendo lo mismo: twekear tu Fedora; y está mucho mejor hecho que el mío en cuestión de diseño e interface!

http://easylifeproject.org/

Me sigue gustando mucho el mío por mi preselección de paquetes y demás. Dicho ésto, EasyLife te permite hacer más cosas (que nunca me interesaron) como instalar Java y habilitar sudo (what?! Fedora se transforma en Ubuntu?!)

Eso es lo que le criticaría. Es todo… por lo demás, úsenlo! Está bien chido! Además, lo hace un Brazileño!… espero mucho software como éste desde allá.

Google Laws!!… no! Leyco!!!

¿Cómo puedo buscar entre las leyes mexicanas? ¿Hay algún buscador de leyes en México?

Me da gusto conocer a personas tan innovadoras como Patricio Páez.

Asistente a LinuxCabal y compañero.

Uno de sus proyectos es el, ya aclamado, Leyco; un buscador de leyes mexicanas correlacionadas… así es; ni siquiera Google tiene este tipo de cosas!

http://leyco.org/

Entre otras cosas, éste es un intento bastante acertado para organizar nuestras leyes y hacerlas disponibles a meros seres humanos; con mucha ayuda integrada al correlacionarlas o, sea, te muestra links a las leyes a las que referencían las mismas.

Patricio es fan de Python. Recientemente, implementó un buscador; utilizando Xapian; más FOSS!

Ahorita, me confiesa, no tiene mucho tiempo de desarrollar activamente esta web app. Tiene pensado, en un futuro, abrirlo a la comunidad y a la participación activa de los interesados. Dicho esto, no dudes en contactarlo. Seguramente puedes revisar la página, señalar bugs y/o sugerencias!

Además, ha publicado la forma para que lo incluyas en tu página! Te agradecería que le dieras crédito!

Buscador Oficial de Leyes Mexicanas Correlacionadas (Leyco)

El buscador es muy interesante, por ejemplo, si buscas “juicio político” (con todo y comillas), te saca todas las leyes en las que incluye esta frase específica! Prueba siguiendo este link:

http://leyco.org/q/?query=%22juicio+pol%C3%ADtico%22

Gracias, Patricio, por tan útiles apps para nuestro pueblo!

p.d. no soy nacionalista!