[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |