Restaurar perfil usuaris locals Linkat 3
De Wiki Linkat
(→Restauració (congelació) del perfil d'usuari local en Linkat 3:) |
Revisió actual (15:08, 25 ago 2009) (mostra codi font) (→Restauració (congelació) del perfil d'usuari local en Linkat 3:) |
||
(Hi ha una revisió intermèdia) | |||
Línia 1: | Línia 1: | ||
- | == '''Restauració (congelació) del perfil | + | == '''Restauració (congelació) del perfil dels usuaris locals en Linkat 3:'''<br> == |
Revisió actual
Restauració (congelació) del perfil dels usuaris locals en Linkat 3:
L'script següent permet restaurar de forma automàtica el perfil dels usuaris locals en Linkat 3. Aquest script té en consideració 4 perfils diferents i que corresponen als perfils:
Abans de procedir a la instal·lació de l'script cal copiar els scripts següents en fitxers que tinguin com a nom:
install_congela.sh (script d'instal·lació) congela.sh (script de restauració) PreSession_Default.diff (conté les modificacions del fitxer Default del GDM que fa possible que l'script congela.sh s'executi
- estàndard (aquest perfil correspon a l'escriptori estàndard de linkat) - infantil - primària - secundària
Així doncs, si un usuari pertany a un grup (només 1) dels esmentats anteriorment, se li restaura, en el proper inici de sessió, l'escriptori corresponent al seu grup.
Requisits necessaris:
Per poder fer ús de l'script cal tenir instal·lats els paquets següents:
perfil-usuari-infantil perfil-usuari-primaria perfil-usuari-secundaria
Aquests paquets es poden instal·lar des del YaST
Instal·lació:
L'script disposa d'un instal·lador que és qui fa les comprovacions necessàries. Així, es comprova que els paquets corresponents als perfils d'infantil, primària i secundària estiguin instal·lats, crea el perfil estàndard (dins del directori /usr/share/linkat/profiles/), modifica el fitxer: /etc/gdm/PreSession/Default per tal que l'script s'executi a l'inici de la sessió de l'usuari i finalment crea els grups locals: estandard infantil primaria secundaria
El codi de l'instal·lador és el següent:
Codi de l'script: install_congela.sh
#!/bin/bash # Script install_congela.sh # # Instal·lador de l'script congela.sh # GPL 3.0 # # # Creació del fitxer perfil-estandard.tar.bz2 que no existeix per defecte # if [ -n "$(id | grep root)" ]; then for i in $(echo perfil-usuari-infantil perfil-usuari-primaria perfil-usuari-secundaria); do if [ "$(zypper search $i | grep $i | cut -d "|" -f 1)" != "i " ]; then echo "El paquet $i ha d'estar instal·lat. Et recomano que facis la instal·lació amb el YaST" exit 0 else echo "El paquet $i està correctament instal·lat." fi done echo "Els paquets corresponents als perfils es troben instal·lats. Ok" if [ -e congela.sh ]; then echo "Copiant el fitxer congela.sh a /usr/local/bin" cp congela.sh /usr/local/bin/. else echo "El fitxer congela.sh no s'ha trobat" exit 0 fi if [ ! -f /usr/share/linkat/profiles/perfil-estandard.tar.bz2 ]; then echo "Creant el perfil estandard a /usr/share/linkat/profiles" cd /etc/skel tar -jcf /usr/share/linkat/profiles/perfil-estandard.tar.bz2 \.[a-zA-Z]* cd - fi if [ -e PreSession_Default.diff ]; then if [ -z "$(cat /etc/gdm/PreSession/Default |grep congela)" ]; then echo "Actualitzant el fitxer /etc/gdm/PreSession/Default perquè executi l'script congela.sh" cp /etc/gdm/PreSession/Default /etc/gdm/PreSession/Default.bak patch /etc/gdm/PreSession/Default < PreSession_Default.diff else echo "El fitxer /etc/gdm/PreSession/Default ja se li ha aplicat el patch." fi fi echo "Fem la còpia de seguretat del fitxer de grups situat a /etc/group" cp /etc/group /etc/group.bak for i in $(echo estandard infantil primaria secundaria); do if [ -z "$(cat /etc/group |grep ^$i)" ]; then echo "Creant el grup local $i" groupadd $i else echo "El grup $i ja existeix. No el donem d'alta" fi done fi
Aquest script ha de ser executat com a root per la qual cosa es recomana fer alguna prova abans en un ordinador de proves.
El programa ha donat d'alta els grups següents: estandard, infantil, primaria i secundaria.
Script de congelació:
L'scrip següent és el que fa la tasca de restaurar els fitxers i/o directoris de configuració de l'usuari.
Codi de l'script: congela.sh
#!/bin/bash # # Grups: estandard, infantil, primaria, secundaria # # # $1 és opcional. Si se li passa com a paràmetre, es restaura la sessió de l'usuari # en cas contrari, agafa el valor de la variable $USER definit a PreSession # if [ -n "$1" ]; then USER=$1 fi if [ "$(cat /etc/passwd | grep $USER)" != "" ]; then PROPIETARI_GRUP=$(cat /etc/passwd |grep $USER | cut -d ":" -f4) DIRECTORI_PERSONAL=$(cat /etc/passwd |grep $USER | cut -d ":" -f6) DIRECTORI_MODEL=/usr/share/linkat/profiles RESTAURA=0 GRUP=$(groups $USER | cut -d ":" -f2) for i in $GRUP; do case "$i" in 'estandard') PERFIL=estandard RESTAURA=1 ;; 'infantil') PERFIL=infantil RESTAURA=1 ;; 'primaria') PERFIL=primaria RESTAURA=1 ;; 'secundaria') PERFIL=secundaria RESTAURA=1 ;; esac; done if [ -n "$2" ]; then PERFIL=$2 RESTAURA=1 fi if [ $RESTAURA -eq 1 ]; then RESTAURA=0 cd $DIRECTORI_PERSONAL # # Eliminem tots els directoris/fitxers .* # for j in $(ls -A | grep '^\.'); do if [ ! -S "$j" ]; then rm -rf $j >/dev/null 2>&1 fi done # # Descomprimim el perfil que s'ha de restaurar # tar -jxf $DIRECTORI_MODEL/perfil-$PERFIL.tar.bz2 # # Només en el cas dels perfils diferents a l'estàndard, s'ha de reanomenar els fitxers continguts dins del # directori .nautilus/metafiles de l'usuari # if [ $PERFIL != "estandard" ]; then cd $DIRECTORI_PERSONAL/.nautilus/metafiles DIRECTORI_PRINCIPAL=$(echo $DIRECTORI_PERSONAL | sed -e 's/'$USER'// ; s/\///g') for j in $(ls $DIRECTORI_PERSONAL/.nautilus/metafiles |grep $PERFIL); do mv $j $(echo $j | sed -e 's/home-local/'$DIRECTORI_PRINCIPAL'/ ; s/'$PERFIL'/'$USER'/') done fi # # En cas que s'hagués esborrat els directoris: Documents, public_html, bin es creen de nou # for i in $(echo Documents public_html bin); do if [ ! -d $DIRECTORI_PERSONAL/$i ]; then mkdir $DIRECTORI_PERSONAL/$i fi done chown -R $USER:$PROPIETARI_GRUP $DIRECTORI_PERSONAL # > /dev/null 2>&1 fi fi
Finalment, el fitxer PreSession_Default.diff conté les modificacions necessàries per tal que l'script congela.sh s'executi a l'entrada de la sesió de l'usuari. Si un usuari NO pertany a cap dels 4 grups esmentats anteriorment, l'script no té cap efecte. L'script NO elimina cap carpeta ni document creat per l'usuari i sí que elimina qualsevol fitxer/directori que comenci per punt.
Codi del fitxer l'script: PreSession_Default.diff
8a9 > sh /usr/local/bin/congela.sh