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
|