¿Hay forma de congelar un usuario para que no pueda hacer modificaciones ni siquiera en el escritorio o al menos para que al restaurar la sesión desaparezcan los cambios que pudieran haberse hecho?
Esto es para usarlo en un aula en el que cada ordenador es usado por más de 10 alumnos diferentes. A los alumnos mayores se les crea un usuario personal, pero hacerlo con todos es muy tedioso porque estamos hablando de cientos de alumnos y para mí es más cómodo que compartan usuario. Por eso me gustaría poder tener un usuario que no se pueda modificar.
Se me ha ocurrido que quizá lo pueda conseguir cambiando el propietario de determinados archivos para que el usuario no pueda escribir en ellos.
He probado a cambiar el propietario del directorio .config/lxpanel del usuario que quiero capar. Puede modificar los paneles, pero al reiciarse la sesión aperecen como estaban anteriormente. Me gusta.
He probado a cambiar el propietario de .config, para congelarlo todo. Entonces no entra en la sesión. Supongo que para entrar, el usuario debe poder escribir en ese directorio
Hola, Santiago, concreta un poco lo que quieres hacer. ¿Sólo congelar posibles cambios en las configuraciones o también que cualquier archivo que se descargue de internet o documentos que se creen en el ordenador desaparezcan al reiniciar?
Lo que comentas me parece bien. También puede ser interesante que desaparezcan los archivos descargados y los documentos creados.
Puedes usar varias formas para congelar un usuario. Una posibilidad es montar /home como sólo lectura en un sistema de ficheros squashfs, vamos, el mismo método que usa un livecd (se puede escribir, pero al reiniciar desaparece todo). Pero sinceramente creemos que lo más sencillo y práctico es copiar la carpeta de usuario que quieras conservar a otro lugar y usar rsync para mantenerla siempre igual. Esto es:
0) Fija la carpeta que quieras congelar en otro lugar, por ejemplo, en /srv que normalmente no se usa para nada (puedes crear la carpeta que quieras en cualquier otro lugar). Procura que tenga permisos de escritura con "sudo chmod ugo=rwx /srv"
1) Luego te logueas como el usuarioacongelar para todos los archivos que crees mantenga sus permisos y propietario y lanzas:
rsync -va /home/usuarioacongelar/ /srv
Esto copiará todo lo que hay en usuarioacongelar en /srv. Puedes meter ese comando en un script y llamarlo cada vez que quieras actualizar la carpeta usuarioacongelar, por ejemplo, lo puedes llamar "fijausuario".
2) Crea otro script, por ejemplo, llamado "restaurausuario" que se encargará de restaurar la carpeta home en cada reinicio con el siguiente contenido:
rsync -va --delete /srv/ /home/usuarioacongelar/
La opción --delete (con dos guiones delante) indica a rsync que debe restaurarlo todo para dejarlo exactamente igual que está en /srv. La ventaja de usar rsync es que sólo tratará las diferencias, esto es, no copiará todo todas las veces como haría el comando cp.
Lo tienes que colocar para que se ejecute antes de que carguen las X, por ejemplo, en /etc/X11/Xsession.d/ 51x11restaura
Y listo, en cada reinicio restaurausuario mantendrá a raya la carpeta de usuario completamente y cuando quieras meter tú algún cambio, lo único que tienes que hacer es hacer esos cambios y luego acordarte de lanzar el comando fijausuario para que no se borren al reiniciar.
Si quieres que únicamente sean las configuraciones las que se mantengan fijas, tienes que hacer un paso intermedio. Vamos a hacer unas pruebas y te comentamos la opción más sencilla.
Se me ha ocurrido otra forma de hacerlo:
He editado /home/usuariocongelado/.config/lxssesión/LXDE/autostart y he añadido esta linea: @rm -r /home/usuariocongelado/Doumentos/* Al reiniciar la sesión se borran los documentos que se metieron en la carpeta /Documentos.
Sobre lo que comentas de la particion squafshts, eso afectaría a todos los usuarios ¿no? No habría forma de hacerlo sólo con un usuario. Es decir, ¿Puedo montar exclusivamente /home/usuariocongelado en esa partición?
Esa solución es de poco alcance ya que si se guardan cosas en cualquier otra carpeta no tendría efecto.
Te adjunto lo que hemos pensado y probado como una solución sencilla:
https://drive.google.com/file/d/0B6hCoiq1TeUxckFYSnJ2ZFhpU0U/edit?usp=sh...
ó
http://minino.galpon.org/public/improvements/minino-congelador.tar.gz
En el LEEME.txt viene explicado el funcionamiento, si te surge alguna duda, ya sabes.
Funciona perfectamente. ¡Qué competentes sois!
Omitir/eliminar el fichero 51x11..., así ya no trabaja en cada inicio/reinicio y, llegado el momento, ejecutar la misma linea que se incluía en ese fichero, pero desde terminal.
Recuerda que es norma en los foros, que una vez solucionado el problema planteado, la persona que lo inició edite la primera entrada y al título le añada. [Solucionado]
Así sirve de referencia a cualquiera que consulte el foro.
Creo que hay un error en el script fijausuario. ¿No debería incluir la opción --delete en rsync para que se puedan fijar un usuario despueś de haberle quitado algo?
Como comenté anteriormente, estamos trabajando en un script para hacer este trabajo. Puedes descargarlo y probarlo (bajo tu responsabilidad).
sudo wget http://minino.galpon.org/public/improvements/minino-desktop-freeze -O /usr/local/bin/minino-desktop-freeze
ejecutalo desde terminal con:
sudo minino-desktop-freeze
es probable que tengas que darle permisos de ejecución
sudo chmod +x /usr/local/bin/minino-desktop-freeze
O si lo prefieres, descargalo (http://minino.galpon.org/public/improvements/minino-desktop-freeze) y fijate en el
case
final como vamos construyendo el restaurador (las líneas:line_to_send=
)He probado el script del congelador (por supuesto bajo mi responsabilidad, jamás se me ocurriría echaros algo en cara) y no va. No solo eso, sino que al reiniciar el equipo, ya no arranca. No hay que preocuparse, porque estoy instalando equipos en mi aula con minino y en media hora tengo uno perfectamente montado. Tengo 30 equipos con minino y aparentemente van de coña.
Quizá el problema resida en que probé el script en un ordenador que ya tenía el script viejo.
El script viejo me gusta y funciona bien, pero he observado que no me funciona fijausuario una vez que ya he lanzado ese escript anteriormente. Me explico: en un usuario que ya tengo congelado, hago unas modificaciones (quito el panel de la izquierda y elimnino mídori -ya que se cierra solo- del panel inferior). Cierro la sesión, ejecuto fijausuario usuario y al entrar de nuevo, vuelve a aparecer el panel izquierdo y midorí en el inferior. Incluso he modificado fijausuario añadiendo --delete. Incluso he borrado el panel izquierdo de /srv/home/usuario/.config/lxpanel/LXDE/panels. Nada, al reiniciar vuelve a aparecer.
Ya he descubierto por qué el equipo no arrancaba después. Cambié el nombre del equipo e incorporé un guión en el mismo (PC_17). Resulta que el nombre del host no puede tener guiones. Corregido este error, el equipo sí arranca. Muy útil el modo de recuperación.
Cuando pueda vuelvo a probar el script.
El uso del congelador de usuarios, me está facilintado mucho las clases, ya quye siempre está impecable y los alumnos no pueden copiar trabajos de otros.
Mis alumnos mayores tienen usuarios no congelados y están encantados por que les encanta personalizarlo. Sin embargo, me estoy encontrando con una dificultad y es que con mayor frecuencia de la deseable, eliminan el panel inferior lo que me obliga a perder tiempo volviéndoselo a poner. Sería estupendo que los usuarios no congelados, tuvieran ese panel inferior congelado.
Creo que eso se podría conseguir añadiendo cp /etc/skel/.config/lxpanel/LXDE/panels/bottom /home/usuario/.config/lxpanel/LXDE/panels/ al script 51x11restaurausuario