Projet

Général

Profil

droits_partage_CORRIGE.sh

Pascal RATTE, 03/12/2010 11:27

Télécharger (4,02 ko)

 
1
#!/bin/bash
2
#############################################
3
#					    #
4
# Script de remise en place des ACLs	    #
5
# sur les partages classe (donnees/travail) #
6
#					    #
7
# développé par eole <eole@ac-dijon.fr>     #
8
#					    #
9
#############################################
10

    
11
liste_classe=`ldapsearch -x description=classe*|grep "cn:"|awk '{print $2}'`
12
liste_groupe=`ldapsearch -x objectClass=posixGroup|grep "cn:"|awk '{print $2}'`
13

    
14
err_group=""
15
err_prof=""
16
err_ele=""
17

    
18
for grp in $liste_groupe
19
do
20
	REP=/home/workgroups/${grp}
21
	if [ -d "${REP}" ]
22
	then
23
		if [ -d "${REP}/donnees" -a -d "${REP}/travail" ]
24
		then
25
			echo "Mise en place des ACLs pour le groupe (type classe) : ${grp}"
26
			donnees=${REP}/donnees
27
		        travail=${REP}/travail
28
			setfacl -Rbk ${REP}
29
			chown -R root:${grp} ${REP}
30
			chmod -R 700 ${REP}
31
			setfacl -m g:profs-${grp}:r-x ${REP}
32
			[ $? -ne 0 ] && err_prof="$err_prof profs-${grp}"
33
			setfacl -m g:profs-${grp}:rwx ${REP}/*
34
			[ -d "${travail}" ] && setfacl -Rm g:profs-${grp}:rwx ${travail}
35
			[ -d "${donnees}" ] && setfacl -Rm g:profs-${grp}:rwx ${donnees}
36
			# si le groupe est inexistant => erreur
37
			setfacl -m g:${grp}:r-x ${REP}
38
			[ $? -ne 0 ] && err_group="$err_ele ${grp}"
39
			setfacl -m g:${grp}:r-x ${REP}/*
40
			[ -d "${travail}" ] && setfacl -Rm g:${grp}:rwx ${travail}
41
			[ -d "${donnees}" ] && setfacl -Rm g:${grp}:r-x ${donnees}
42
			#ACLs par defaut
43
			getfacl --access --absolute-names  ${REP} | setfacl -d -R -M- ${REP}
44
			[ -d "${travail}" ] && getfacl --access --absolute-names  ${travail} | setfacl -d -R -M- ${travail}
45
			[ -d "${donnees}" ] && getfacl --access --absolute-names  ${donnees} | setfacl -d -R -M- ${donnees}
46
		else
47
			if [ "${grp:0:6}" == "profs-" ]
48
			then
49
				echo "Mise en place des ACLs pour le groupe profs : ${grp}"
50
				chown -R root:${grp} ${REP}
51
				chmod -R 700 ${REP}
52
				setfacl -bm g:${grp}:r-x ${REP}
53
				getfacl --access --absolute-names  ${REP} | setfacl -d -R -M- ${REP}
54
			else
55
				if [ "${grp}" != "professeurs" ]
56
				then
57
					echo "Mise en place des ACLs pour le groupe : ${grp}"
58
					setfacl -Rbk ${REP}
59
					chown -R root ${REP}
60
					chmod -R 700 ${REP}
61
					# si le groupe est inexistant => erreur
62
					setfacl -RPm g:${grp}:rwx ${REP}
63
					[ $? -ne 0 ] && err_group="$err_group ${grp}"
64
					#ACLs par defaut
65
					getfacl --access --absolute-names  ${REP} | setfacl -d -R -M- ${REP}
66
				fi
67
			fi
68
		fi
69
	fi
70
done
71

    
72
for classe in $liste_classe
73
do
74
	REP=/home/workgroups/${classe}
75
	REP_PR=/home/workgroups/profs-${classe}
76
	if [ -d "${REP}" ]
77
	then
78
		echo "Mise en place des ACLs pour la classe : ${classe}"
79
		donnees=${REP}/donnees
80
		travail=${REP}/travail
81
		setfacl -Rbk ${REP}
82
		chown -R root:${classe} ${REP}
83
		chmod -R 700 ${REP}
84
		chown -R root:profs-${classe} ${REP_PR}
85
		# si le groupe est inexistant => erreur
86
		setfacl -m g:profs-${classe}:r-x ${REP}
87
		[ $? -ne 0 ] && err_prof="$err_prof profs-${classe}"
88
		setfacl -m g:profs-${classe}:rwx ${REP}/*
89
		setfacl -m g:profs-${classe}:r-x ${REP_PR}
90
		[ -d "${travail}" ] && setfacl -Rm g:profs-${classe}:rwx ${travail}
91
		[ -d "${donnees}" ] && setfacl -Rm g:profs-${classe}:rwx ${donnees}
92
		# si le groupe est inexistant => erreur
93
		setfacl -m g:${classe}:r-x ${REP}
94
		[ $? -ne 0 ] && err_ele="$err_ele ${classe}"
95
		setfacl -m g:${classe}:r-x ${REP}/*
96
		[ -d "${travail}" ] && setfacl -Rm g:${classe}:rwx ${travail}
97
		[ -d "${donnees}" ] && setfacl -Rm g:${classe}:r-x ${donnees}
98
		#ACLs par defaut
99
		getfacl --access --absolute-names  ${REP} | setfacl -d -R -M- ${REP}
100
		getfacl --access --absolute-names  ${REP_PR} | setfacl -d -R -M- ${REP_PR}
101
		[ -d "${travail}" ] && getfacl --access --absolute-names  ${travail} | setfacl -d -R -M- ${travail}
102
		[ -d "${donnees}" ] && getfacl --access --absolute-names  ${donnees} | setfacl -d -R -M- ${donnees}
103
	fi
104
done
105

    
106
echo "Terminé"
107
[ "$err_group" != "" ] && echo "Erreur sur les groupes : $err_group"
108
[ "$err_prof" != "" ] && echo "Erreur sur les groupes : $err_prof"
109
[ "$err_ele" != "" ] && echo "Erreur sur les groupes : $err_ele"
110
setfacl -m g:professeurs:r-x /home/classes/
111
setfacl -m g:professeurs:r-x /home/classes/*
112
exit 0