Restaurar perfil usuaris locals Linkat 3
De Wiki Linkat
Revisió actual (15:08, 25 ago 2009) (mostra codi font) (→Restauració (congelació) del perfil d'usuari local en Linkat 3:) |
|||
(Hi ha 3 revisions intermèdies) | |||
Línia 1: | Línia 1: | ||
- | == '''Restauració (congelació) del perfil | + | == '''Restauració (congelació) del perfil dels usuaris locals en Linkat 3:'''<br> == |
Línia 5: | Línia 5: | ||
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:<br> | 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:<br> | ||
- | + | Abans de procedir a la instal·lació de l'script cal copiar els scripts següents en fitxers que tinguin com a nom: | |
<pre> | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
- | + | <pre> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | - estàndard (aquest perfil correspon a l'escriptori estàndard de linkat) | ||
+ | - infantil | ||
+ | - primària | ||
+ | - secundària | ||
</pre> | </pre> | ||
- | |||
- | |||
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.<br> | 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.<br> | ||
- | |||
- | |||
'''<u>Requisits necessaris:</u>'''<br> | '''<u>Requisits necessaris:</u>'''<br> | ||
- | |||
- | |||
Per poder fer ús de l'script cal tenir instal·lats els paquets següents:<br> | Per poder fer ús de l'script cal tenir instal·lats els paquets següents:<br> | ||
Línia 34: | Línia 31: | ||
<pre> | <pre> | ||
- | + | perfil-usuari-infantil | |
- | perfil-usuari-infantil | + | perfil-usuari-primaria |
- | + | perfil-usuari-secundaria | |
</pre> | </pre> | ||
- | |||
- | |||
Aquests paquets es poden instal·lar des del YaST<br> | Aquests paquets es poden instal·lar des del YaST<br> | ||
Línia 57: | Línia 52: | ||
<br> | <br> | ||
- | + | '''<u>Codi de l'script: install_congela.sh</u>'''<br> | |
- | #!/bin/bash | + | <pre> |
+ | #!/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 | ||
+ | </pre> | ||
- | |||
Aquest script ha de ser executat com a root per la qual cosa es recomana fer alguna prova abans en un ordinador de proves. | Aquest script ha de ser executat com a root per la qual cosa es recomana fer alguna prova abans en un ordinador de proves. | ||
Línia 67: | Línia 114: | ||
El programa ha donat d'alta els grups següents: estandard, infantil, primaria i secundaria. | El programa ha donat d'alta els grups següents: estandard, infantil, primaria i secundaria. | ||
- | |||
- | + | '''<u>Script de congelació:</u>'''<br> | |
+ | |||
+ | L'scrip següent és el que fa la tasca de restaurar els fitxers i/o directoris de configuració de l'usuari. | ||
+ | |||
+ | |||
+ | '''<u>Codi de l'script: congela.sh</u>'''<br> | ||
+ | |||
+ | <pre> | ||
+ | #!/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 | ||
+ | </pre> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | '''<u>Codi del fitxer l'script: PreSession_Default.diff</u>'''<br> | ||
+ | |||
+ | <pre> | ||
+ | 8a9 | ||
+ | > sh /usr/local/bin/congela.sh | ||
+ | </pre> |
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