Restaurar directorio home al apagar en LUbuntu


logoLUbuntuTras la restauración de un aula completa todo funciona correctamente, el problema viene cuando comienza su uso. A lo largo del día pasan muchos alumnos por el aula, y muchos tienden a desconfigurar el Escritorio, algo que incomoda bastante.

Tenemos varias opciones, la primera es utilizar un congelador, pero en años anteriores he tenido ciertos problemas, en Windows, todo hay que decirlo, y la segunda consiste en hacer un borrado del directorio home y restauración del mimo. Esta segunda opción es la que paso a detallar.

En primer lugar creamos el usuario en cuestión, en mi caso el usuario alumno, lo creamos de manera habitual e iniciamos sesión con este, configuramos el aspecto y todo lo que nos interese, accesos directos, etc. Una vez terminado esto cerramos sesión y volvemos a nuestro usuario administrador.

A continuación, comprimimos el directorio home al completo del usuario alumno.

$ sudo tar -cvzf alumno.tar /home/alumno

Con esto ya tendríamos una copia del perfil por defecto para nuestro usuario, como medida de precaución podemos añadir un punto (.) delante del nombre del fichero para ocultarlo, quedando .alumno.tar. En mi caso, este fichero se queda en /home, para no irme muy lejos, pero podéis ponerlo donde queráis.

El siguiente paso será crear el script encargado de hacer la limpieza, es algo muy sencillo, ya que lo que vamos a hacer es eliminar por completo el home del usuario y volver a restaurar a partir del fichero que hemos comprimido, quedaría algo así.

#!/bin/sh
### BEGIN INIT INFO
# Provides:          restauraralu.sh
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Limpieza del directorio home
# Description:       Script para limpiar el usuario Alumno.
### END INIT INFO

rm -rf /home/alumno
cd /home/
tar -xzvf .alumno.tar
chown -R alumno:alumno /home/alumno

exit 0

Para que no muestre el warning Missing LSB information al añadir el script, poner las líneas que van desde ### BEGIN INIT INFO hasta ### END INIT INFO, ambas inclusive.

Copiamos el script restauraralu.sh en el directorio /etc/init.d.

$ sudo cp restauraralu.sh /etc/init.d

Una vez esté el script en el directorio, muy importante que este sea ejecutable y pertenezca al usuario y grupo root.

$ sudo chown root:root restauraralu.sh
$ sudo chmod 755 restauraralu.sh

Este directorio contiene los scripts que se ejecutan durante el arranque y parada del sistema, ahora sólo nos queda añadirlo, en mi caso para que se ejecute en la parada del sistema.

$ sudo update-rc.d restauraralu.sh stop 99 0 1 6 .

Con este comando le estamos indicando que debe ejecutarse en la parada del sistema, no olvidar el punto, concretamente con el 0 se ejecutará al parar el sistema (halt), el 6 para reiniciar (reboot) y el 1 para arrancar en modo single user, que viene a ser una configuración mínima para realizar tareas de administración. (ver más)

Ya sólo nos queda probar que funciona, y funciona realmente, deja al usuario limpio y listo para el siguiente.

Por último, si queremos quitar nuestro script del cierre del sistema deberemos ejecutar el siguiente comando.

$ sudo update-rc.d -f restauraralu.sh remove

Espero que os sirva.

Au!!


19 respuestas a “Restaurar directorio home al apagar en LUbuntu”

  1. He añadido un par de líneas que se me habían escapado y que son muy importantes para que el script se se ejecute.

    $ sudo chown root:root restauraralu.sh
    $ sudo chmod 755 restauraralu.sh

    • Buenas noches, he seguido el tutorial paso a paso en lubuntu 13.04 ya que me interesa mucho tener una cuenta con las características de la cuenta invitado en los equipos del centro donde trabajo, pero al cerrar sesión, reiniciar o apagar y encender, si realizo algún cambio este sigue siendo permanente, no me ha funcionado el tutorial, y he realizado paso a paso todo. ¿Cuál puede ser la causa?

      • Hola srkraneo, he utilizado muy recientemente esta configuración en una aula con Lubuntu 13.04 y funciona, se me ocurre que puede haber un problema con los permisos de los archivos, verifica tanto el script como el fichero comprimido de los datos de usuario.
        Un saludo.

  2. Hola Javier, una cosa, si es por temas de privilegios, entonces el usuario que creo desde la sesión administrador no puede ser un usuario de escritorio, tiene que ser un usuario con permisos (normal), ¿no?

    • Hola, el usuario puede ser del tipo que quieras, el script lo ejecuta root, lo que si que tienes que tener en cuenta, es que tras la restauración, debes cambiar el propietario de los archivos restaurados, el chown del script.

      Espero que te sea de ayuda, ya me cuentas, un saludo.

  3. Hola Javier nuevamente, ayer hice una prueba, y conseguí que me borrara el directorio, porque luego si ejecuto gksu pcmanfm en el terminal y exploro el /home desde la cuenta administrador ya no aparece, pero cuando intentó logarme desde la pantalla de inicio de sesión me da un error y se vuelve a la pantalla de inicio de sesión nuevamente, miro el /home y no se ha creado el directorio alumno. No se qué es lo que estoy haciendo mal. Si ejecuto el archivo .tar se descomprime correctamente, y en el script la orden está tal como tu la tienes arriba, la verdad es que no se dónde estoy fallando.

    • Hola srkraneo, parece que el script funciona, ya que sí te elimina el directorio de alumno, comprueba el propietario del fichero .tar, yo lo tengo como root:root y permisos 700, prueba así y me dices.

      • Hola Javier nuevamente, una cuestión, no he podido retomar el tema hasta ahora, haber si consiguió que funcione. Una cosa si quiero que se realice en vez de en la parada o reinicio, sea en el cierre de sesión, ¿cambio la palabra stop por logout?

  4. Me ocurre lo mismo, al reiniciar la máquina se borra el directorio, pero no me lo crea nuevamente, el .tar tiene root:root y 700, como me has dicho, pero sigue sin descomprimirlo, me estoy volviendo loco.

    • Puede que me confundiera, revisa los permisos nuevamente, ten en cuenta que el primer número corresponde al propietario, el segundo al grupo y el tercero a otros, cambia a 770 el fichero comprimido.

  5. El archivo tar lo tengo en /home y el script en /etc/init.d si lo ejecuto me elimina el directorio que creo manualmente para ver si realiza la acción pero no lo vuelve a descomprimir, sólo lo borra.

  6. si ejecuto desde el terminal uno a uno las líneas del script, cuando llegó a ejecutar tar -xzvf .alumno.tar me da un error:
    tar (child): .alumno.tar: No se puede open: permiso denegado
    tar (child): Error is not recoverable: exiting nos
    tar: (child): returned status 2
    tar: Error is not recoverable: exiting now

    pero los permisos están correcto, esta dentro del grupo root, y tiene permiso de ejecución, los mismos que el script, bueno este tiene 700 en vez de 755.

    • Prueba a crear de nuevo el fichero comprimido, ten en cuenta, que al restaurar, el fichero comprimido deberá tener la estructura /alumno/ y todo su contenido.

  7. Por fin he conseguido que funcione a la perfección, me ha costado, era un error en el tar, ejecutando línea por línea desde el terminal me di cuenta del fallo y lo solucioné. Mil gracias.
    Ahora lo suyo, ¿se podría hacer para que en vez del reiniciar, ejecutase el script en el cierre de sesión? Eso sería lo ideal.

    Gracias nuevamente, porque ahora aún que sea al reiniciar o apagar el PC, se que los cambios que los chavales realicen en el aula serán temporales.

    • Me alegro que por fin te funcione, ha costado.

      En cuanto al cierre de sesión, ten en cuenta que estamos trabajando con los runlevels, y únicamente tenemos siete, aquí puedes verlos, y ninguno de ellos es para el cierre de sesión.

      Si consigues algo sobre el cierre de sesión házmelo saber. Un saludo.

  8. Para ejecutar un script al iniciar sesión se puede poner en sudo gedit /etc/gdm/PostSession/Default y añadimos al principio del script :

    rm -rf /home/usuario2
    mkdir /home/usuario2
    chown -R usuario2:usuario2 /home/usuario2

    Fuente: una respuesta de http://www.ubuntu-es.org/node/125126#.U2HV26aPePA
    Hay otra respuesta que ejecuta lo mismo que el sistema cuando crea un usuario para crear los ficheros básicos de usuario.

  9. Y si nuestro inicio de sesión lo lleva otro entorno, pues elijan el vuestro:

    Para unity sudo gedit /etc/lightdm/lightdm.conf
    Para gnome /etc/gdm/PostSession/Default
    para kde3 /etc/kde3/kdm/Xreset

    Y cada cual que elija, o busque el suyo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *