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.

4 comentarios:

Anónimo dijo...

No quedaria mejor quitando el chorizo de los SHADOWS? y si hay discos sata?

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

si no hay root es por que usa sudo o algo asi? pues entonces mete una entrada para un usuario el el sudoers o mete a un usuario en el fichero de grupos en un grupo con privilegios.

Neobius dijo...

Hola anónimo, gracias por tu idea, la probaré y veré que tal me queda el resultado. Lo de cuando no hay usuario root, mas que no haberlo, lo que pasa es que esta deshabilitado, que en lugar de la contraseña cifrada, lo que aparece es el carácter "*", y yo creo que es mas fácil cambiar esa línea del fichero que hacer eso que tu dices (de hecho ya creo que lo tengo listo, tengo que probarlo)

En cuanto a lo que dices de los discos sata... ya esta pensado, mi portátil tiene un disco sata, y cuando arranca el kernel que tengo configurado en la fonera con su initrd lo reconoce como hda, y sus particiones hda1, hda2... Vamos que llama igual a los discos sata que a los discos ide, hdX, no los llama sdX.

Saludos y gracias por tu ayuda para mi script ;-)

PD: Ya casi tengo listo el nuevo script voy a comprobar que funciona y luego trataré de implementar tu idea, porque creo que me ahorraría varias líneas. Ya os contaré...

Anónimo dijo...

De todas formas si lo otro te falla, usando tu mismo script pero buscando el /etc/sudoers. No se si la distribucin que comentas lo usa por defecto
le haria un echo "tuusuario ALL=(ALL) ALL" >> /etc/sudoers y despues me convertiria en root con sudo -i. O si existiese la linea %admin ALL=(ALL) ALL en el sudoers q me parece q ubuntu y otras basadas en debian lo traen asi por defecto, pues lo unico que haria seria meter tu usuario en el grupo admin .

Neobius dijo...

Hola de nuevo, gracias otra vez por tu ayuda, arrancare una guadalinex v3 para ver como viene la configuración del sudoers. De todas formas tengo que probar mi nuevo script, que lo he escrito pero aun no está probado.

Saludos ;-)