martes, agosto 14, 2007

La fonera funciona, pero...

Pero puede no valer para el centro tic, porque ahora mismo la fonera lo que hace es buscar el archivo shadow, y una vez encontrado busca una cadena de texto, en la línea del usuario root, que empiece por $ sigan varios caracteres y después ":", esa es la contraseña cifrada, y luego la elimina. Simple y sencillo, ahora mismo funciona bien tanto en mi servidor como en mi portátil, en unos 25 segundos arranque borra la contraseña y reinicia. El script al final ha quedado así:

PARTICIONES=$(ls /dev | grep "hd..")
mkdir /media
for i in $(echo $PARTICIONES)
do
mkdir /media/$i
mount /dev/$i /media/$i
SHADOW=$(ls /media/$i/etc/shadow)
SHADOW2=/media/$i/etc/shadow
if [ $SHADOW = $SHADOW2 ]; then
cp $SHADOW $SHADOW.bak
cat $SHADOW | grep root | sed -r 's/|[$][^:]+//g' > $SHADOW
cat $SHADOW.bak | grep -v root >> $SHADOW;
else umount /media/$i;
fi
done
shutdown -r now

Y lo he puesto lo antes que he podido para que el sistema pueda arrancar y funcionar, el fichero /etc/init.d/rcS ha quedado así:

. /etc/init.d/functions
switch_root_to_tmpfs
mount_dev_on_devfs
mount_devpts
mount_proc
delete_password
shellout

Bien, así ha funcionado todo, sin embargo puede ser que no funcione en el centro tic porque guadalinex por defecto tiene el usuario root deshabilitado, lo que se traduce como una configuración diferente en el fichero shadow, en lugar de una cadena de caracteres que representan la contraseña cifrada, aparece el carácter "*", por lo tanto mi comando sustitución con sed no funcionará. Así que tengo que volver a cambiar el script, porque a pesar de funcionar en muchas maquinas, no lo hará en las que tengan root deshabilitado.

PD: Puede que esto le interese a mas de uno, así que a lo mejor cuando acabe prepar mi propio firmware, o un paquete ipk, o algo para que cualquiera pueda configurar fácilmente su fonera tal y como está la mía.