[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/scripts/ -> creer_grpclass.sh (source)

   1  #!/bin/bash
   2  
   3  ##### script permettant de créer les groupes classes tel groupes de techno / svt / idd en college##### 
   4  # ou bien tpe en lycee,
   5  # franck molle 03/2005
   6  #$Id: creer_grpclass.sh 7061 2012-04-02 09:22:45Z dbo $
   7  
   8  #Couleurs
   9  COLTITRE="\033[1;35m"    # Rose
  10  COLPARTIE="\033[1;34m"    # Bleu
  11  COLTXT="\033[0;37m"    # Gris
  12  COLCHOIX="\033[1;33m"    # Jaune
  13  COLDEFAUT="\033[0;33m"    # Brun-jaune
  14  COLSAISIE="\033[1;32m"    # Vert
  15  COLCMD="\033[1;37m"    # Blanc
  16  COLERREUR="\033[1;31m"    # Rouge
  17  COLINFO="\033[0;36m"    # Cyan
  18  
  19  ERREUR()
  20  {
  21      echo -e "$COLERREUR"
  22      echo "ERREUR!"
  23      echo -e "$1"
  24      echo -e "$COLTXT"
  25      exit 1
  26  }
  27  echo -e "$COLTITRE"
  28  echo -e "Géneration des ressources pour les groupes IDD / Techno / TPE, etc ...."
  29  echo -e "à partir d'un sous groupe créé avec l'interface"
  30  echo -e "$COLTXT"
  31  
  32  if [ -z $1 ]; then
  33  ERREUR "Il faut donner le nom du groupe classe à créer en paramètre"
  34  fi
  35  
  36  TST_PARAM_OK=$(ldapsearch -xLLL cn="$1" | grep memberUid)
  37  if [ -z "$TST_PARAM_OK" ]; then
  38  ERREUR "Impossible de trouver le groupe passé en paramètre dans l'annuaire Ldap"
  39  fi
  40  
  41  CLASS_GRP=$(echo "Classe_grp_$1")
  42  
  43  if [ ! -e /var/se3/Classes/$CLASS_GRP ]; then
  44  mkdir /var/se3/Classes/$CLASS_GRP
  45  chown admin:nogroup /var/se3/Classes/$CLASS_GRP
  46  chmod 700 /var/se3/Classes/$CLASS_GRP
  47  #Application des acl posix pour le groupe $CLASS_GRP
  48  setfacl -m d:m::rwx /var/se3/Classes/$CLASS_GRP
  49  setfacl -m m::rwx /var/se3/Classes/$CLASS_GRP
  50  setfacl -m g:$1:rx /var/se3/Classes/$CLASS_GRP
  51  
  52  # Application des acl posix pour le groupe admins SE3 sur l'ensemble de l'arborescence
  53  setfacl -m d:g:admins:rwx /var/se3/Classes/$CLASS_GRP
  54  setfacl -m g:admins:rwx /var/se3/Classes/$CLASS_GRP
  55  fi
  56  
  57  ldapsearch -xLLL cn="$1" | grep memberUid | cut -d " " -f2 | while read USER
  58  do
  59  echo -e "$COLTXT"
  60  echo "Traitement de l'utilisateur $USER"
  61      GROUPS_USER=$(ldapsearch -xLLL memberUid="$USER" | grep "^cn" | cut -d " " -f2 | grep -v "$1")
  62      TEST_GRP_PROFS=$(echo "$GROUPS_USER" | grep Profs )
  63      if [ -z $TEST_GRP_PROFS ]; then
  64          CLASSE_USER=$(echo "$GROUPS_USER" | grep Classe)
  65          NOM_CLASSE=$(echo $CLASSE_USER | sed -e "s/Classe_//")
  66              prenom=$(echo $USER | cut -s -d "." -f1)
  67              nom=$(echo $USER | cut -s -d "." -f2)
  68              if [ ! -z $nom ]; then
  69                      ELEVE=$(echo "$nom.$prenom")
  70              else
  71                      ELEVE=$USER
  72              fi 
  73          if [ ! -e /var/se3/Classes/$CLASS_GRP/$ELEVE}_$NOM_CLASSE ]; then
  74              echo -e "$COLCMD}Création du lien symbolique vers le répertoire classe de l'élève $ELEVE $COLTXT}"
  75              ln -s /var/se3/Classes/$CLASSE_USER/$ELEVE /var/se3/Classes/$CLASS_GRP/$ELEVE}_$NOM_CLASSE
  76          else
  77              echo -e "$COLINFO}Le lien symbolique vers le répertoire classe de de l'élève $USER existe déjà $COLTXT}"
  78          fi
  79          echo "/var/se3/Classes/$CLASSE_USER" >> /tmp/$1_list_rep_eleves
  80          echo "/var/se3/Classes/$CLASSE_USER/$ELEVE" >> /tmp/$1_list_rep_eleves
  81      else
  82          echo -e "$COLCMD}Mise en place des acls pour le prof $USER sur la ressource /var/se3/Classes/$CLASS_GRP $COLCMD}"
  83          echo "$USER" >> /tmp/$1_list_profs
  84          setfacl -m d:u:$USER:rwx /var/se3/Classes/$CLASS_GRP
  85          setfacl -m u:$USER:rx /var/se3/Classes/$CLASS_GRP
  86      fi
  87      
  88      
  89  done 
  90  echo -e "$COLTXT"
  91  cat /tmp/$1_list_profs | while read PROF
  92  do
  93      echo -e "$COLCMD}Mise en place des acls pour le prof $PROF sur les répertoires classe des élèves $COLTXT}"
  94      cat /tmp/$1_list_rep_eleves | while read REP_CLASS ; read REP_ELEV 
  95      do
  96  #     echo "setfacl -m u:$PROF:x $REP_CLASS"
  97  #     echo "setfacl -m u:$PROF:rwx $REP_ELEV"
  98          TEST_ACL=$(getfacl "$REP_CLASS" | grep "$PROF")
  99  #        if [  -z "$TEST_ACL" ]; then
 100          
 101              setfacl -m u:$PROF:rx $REP_CLASS
 102              setfacl -m d:u:$PROF:rwx $REP_ELEV
 103  #        else
 104              echo -e "$PROF a deja des acls sur $REP_CLASS"    
 105          
 106  #        fi
 107      setfacl -m u:$PROF:rwx $REP_ELEV        
 108      done
 109  
 110  done
 111  
 112  
 113  # Creation du sous dossier travail
 114  # c'est une obligation de le faire a ce niveau pour  que les profs
 115  # aient les acls sur travail et profs par heritage
 116  if [ ! -e /var/se3/Classes/$CLASS_GRP/_travail ]; then
 117  mkdir /var/se3/Classes/$CLASS_GRP/_travail
 118  chown admin:nogroup /var/se3/Classes/$CLASS_GRP/_travail
 119  chmod 700 /var/se3/Classes/$CLASS_GRP/_travail
 120  setfacl -m d:g:$1:rx /var/se3/Classes/$CLASS_GRP/_travail
 121  setfacl -m g:$1:rx /var/se3/Classes/$CLASS_GRP/_travail
 122  setfacl -m m::rwx /var/se3/Classes/$CLASS_GRP/_travail
 123  fi    
 124  
 125  if [ ! -e /var/se3/Classes/$CLASS_GRP/_profs ]; then
 126  #  Creation du sous dossier professeurs
 127  mkdir /var/se3/Classes/$CLASS_GRP/_profs
 128  chown admin:nogroup /var/se3/Classes/$CLASS_GRP/_profs
 129  chmod 700 /var/se3/Classes/$CLASS_GRP/_profs
 130  setfacl -m m::rwx /var/se3/Classes/$CLASS_GRP/_profs
 131  fi
 132  
 133  rm -rf /tmp/$1_list_profs
 134  rm -rf /tmp/$1_list_rep_eleves
 135  
 136  echo -e "$COLTITRE"
 137  echo -e "La ressource $1 a été créée dans /var/se3/classe/$CLASS_GRP"
 138  echo -e "$COLTXT"
 139  
 140  exit 0


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1