Wiki Linkat

Restaurar perfil usuaris locals Linkat 3

De Wiki Linkat

(Diferència entre revisions)
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 d'usuari local en Linkat 3:'''<br>  ==
+
== '''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>  
-
<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>
-
- estàndard (aquest perfil correspon a l'escriptori estàndard de linkat)<br>
+
<pre>
-
 
+
-
- infantil<br>
+
-
 
+
-
- primària<br>
+
-
 
+
-
- secundària<br>  
+
 +
- estàndard (aquest perfil correspon a l'escriptori estàndard de linkat)
 +
- infantil
 +
- primària
 +
- secundària
</pre>
</pre>
-
 
-
<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>  
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>  
-
 
-
<br>
 
'''<u>Requisits necessaris:</u>'''<br>  
'''<u>Requisits necessaris:</u>'''<br>  
-
 
-
<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<br>perfil-usuari-primaria<br>perfil-usuari-secundaria  
+
perfil-usuari-primaria
-
 
+
perfil-usuari-secundaria  
</pre>
</pre>
-
 
-
<br>
 
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>  
-
&lt;pre&gt;<br>  
+
'''<u>Codi de l'script: install_congela.sh</u>'''<br>  
-
#!/bin/bash<br>#<br># Instal·lador<br>#<br>#<br># Creació del fitxer perfil-estandard.tar.bz2 que no existeix per defecte<br>#<br>if [ -n "$(id | grep root)" ]; then<br> for i in $(echo perfil-usuari-infantil perfil-usuari-primaria perfil-usuari-secundaria); do <br> if [ "$(zypper search $i | grep $i | cut -d "|" -f 1)"&nbsp;!= "i " ]; then<br> echo "El paquet $i ha d'estar instal·lat. Et recomano que facis la instal·lació amb el YaST"<br> exit 0<br> else<br> echo "El paquet $i està correctament instal·lat."<br> fi<br> done<br> echo "Els paquets corresponents als perfils es troben instal·lats. Ok"<br> if [ -e congela.sh ]; then<br> echo "Copiant el fitxer congela.sh a /usr/local/bin"<br> cp congela.sh /usr/local/bin/.<br> else<br> echo "El fitxer congela.sh no s'ha trobat"<br> exit 0<br> fi<br> if [&nbsp;! -f /usr/share/linkat/profiles/perfil-estandard.tar.bz2 ]; then<br> echo "Creant el perfil estandard a /usr/share/linkat/profiles"<br> cd /etc/skel<br> tar -jcf /usr/share/linkat/profiles/perfil-estandard.tar.bz2 \.[a-zA-Z]*<br> cd -<br> fi<br> if [ -e PreSession_Default.diff ]; then<br> if [ -z "$(cat /etc/gdm/PreSession/Default |grep congela)" ]; then<br> echo "Actualitzant el fitxer /etc/gdm/PreSession/Default perquè executi l'script congela.sh"<br> cp /etc/gdm/PreSession/Default /etc/gdm/PreSession/Default.bak<br> patch /etc/gdm/PreSession/Default &lt; PreSession_Default.diff<br> else<br> echo "El fitxer /etc/gdm/PreSession/Default ja se li ha aplicat el patch."<br> fi<br> fi<br> echo "Fem la còpia de seguretat del fitxer de grups situat a /etc/group"<br> cp /etc/group /etc/group.bak<br> for i in $(echo estandard infantil primaria secundaria); do<br> if [ -z "$(cat /etc/group |grep ^$i)" ]; then<br> echo "Creant el grup local $i"<br> groupadd $i<br> else<br> echo "El grup $i ja existeix. No el donem d'alta"<br> fi<br> done<br>fi<br>&lt;/pre&gt;<br>
+
<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>
-
<br>
 
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.  
-
Si vols que a l'usuari xavier se li restauri sempre el perfil de primària, cal anar al YaST i dir-li que pertanyi, com a grup secundari, al grup primaria. D'aquesta forma, l'uxuari xavier SEMPRE tindrà l'escriptori com el primer dia.
 
-
Una cosa a tenir en compte. El programa NO elimina ni carpetes ni documents creats per l'usuari. Només elimina les configuracions dels programes, així que els favorits del firefox, alguna extensió que tinguis de l'openoffice, etc. desapareixerà.<br><br>
+
'''<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