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…

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* )'

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!

HowTo: Como grabar macros en Bash

Ahá! A los que usamos mucho la CLI, esto nos sirve mucho!

Un macro es algo que quieres que se repita. Por ejemplo, un procedimiento de borrado de archivos, reinicio de servicios, etc.

Ahí va como grabar un macro en la terminal con bash.


1. Presionas Ctrl + x; sueltas y, de inmediato un abrir paréntesis (; o sea:
Ctrl + x, (

2. Empiezas a hacer comandos como:
echo bla
service cherokee restart
find /var/www/sitio -iname '*~' -delete

3. Presionas Ctrl + x; sueltas y, de inmediato, cerrar paréntesis ); o sea:
Ctrl + x, )

4. Ahora, para correrlo, presionas Ctrl + x; sueltas y luego, de inmediato, e; o sea:
Ctrl + x, e

Esto funciona de maravilla. Chécalo y dime si te sirve. ;)

Algunos key bindings para bash que casi nadie se sabe

No he desifrado esto bien todavía pero, ahí va:

Descubrí que, en el manual de bash, vienen unos key bindings para bash muy interesantes. Vienen asÍ:

8.4.1 Commands For Moving
————————-

`beginning-of-line (C-a)’
Move to the start of the current line.

`end-of-line (C-e)’
Move to the end of the line.

`forward-char (C-f)’
Move forward a character.

`backward-char (C-b)’
Move back a character.

`forward-word (M-f)’
Move forward to the end of the next word. Words are composed of
letters and digits.

`backward-word (M-b)’
Move back to the start of the current or previous word. Words are
composed of letters and digits.

`shell-forward-word ()’
Move forward to the end of the next word. Words are delimited by
non-quoted shell metacharacters.

`shell-backward-word ()’
Move back to the start of the current or previous word. Words are
delimited by non-quoted shell metacharacters.

`clear-screen (C-l)’
Clear the screen and redraw the current line, leaving the current
line at the top of the screen.

`redraw-current-line ()’
Refresh the current line. By default, this is unbound.

Descubrí que C-l = Ctrl+l
Y, además, M-f = Esc+f

Por lo pronto, ahí va una pequeña traducción:

En una terminal, prueba:
Ir al inicio de la línea: Ctrl + a
Ir al final de la línea: Ctrl `e
Brincarse una palabra hacia adelante: Esc + f
Brincarse una palabra hacia atrás: Esc + b
Limpiar la pantalla: Ctrl + l (ele)

Hay muchas más. Iré viendo qué onda y poniéndolas en más artículos. Pon comentarios si te sabes más! ;)

WebP: nuevo formato para imágenes

Bueno, como todos ya sabemos (si… como no), Google ha sacado un formato para imágenes que supera todo lo conocido!… según ellos…

La cosa es que es libre y todo el rollo. Está basado en su VP8 y promete muchas cosas en cuanto a calidad y tamaño. Se vé interesante. Si quieres saber más, ve a:
http://code.google.com/speed/webp/

¿Cómo instalarlo en Fedora 13 x86_64?

# Ve por el convertidor (binario) y descárgalo.
wget -c http://webp.googlecode.com/files/webpconv

# Crea el directorio ~/bin
mkdir ~/bin

# Pon tu binario ahí
mv webpconv ~/bin; chmod 700 ~/bin -R

# Pruébalo
webpconv

Visita la galería en: http://code.google.com/speed/webp/gallery.html

Un gran sitio para aprender música!

No mames! Me topé con un gran sitio para todos aquellos músicos que no sabemos ni madre:
http://www.musictheory.net/

Éste sitio, además de ser Creative Commons, es MIT; o sea, el código fuente; hecho en ruby, está disponible! Wow!

Ojalá y lo pudiéramos traducir al español! Ya contacté al autor para ver qué onda.