Subversion Repositories ALCASAR

Rev

Rev 63 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 63 Rev 316
1
#/bin/sh
1
#/bin/sh
2
# $Id: alcasar-profil.sh 63 2010-04-08 19:56:10Z franck $
2
# $Id: alcasar-profil.sh 316 2010-11-14 22:25:53Z richard $
3
 
3
 
4
# Gestion des comptes liés aux profils
4
# Gestion des comptes liés aux profils
5
ADM_PROFIL="admin"
5
ADM_PROFIL="admin"
6
PROFILS="backup manager"
6
PROFILS="backup manager"
7
ALL_PROFILS=`echo $ADM_PROFIL $PROFILS`
7
ALL_PROFILS=`echo $ADM_PROFIL $PROFILS`
8
DIR_KEY="/var/www/html/digest"
8
DIR_KEY="/var/www/html/acc/digest"
9
SED="/bin/sed -i"
9
SED="/bin/sed -i"
10
HOSTNAME=`uname -n`
10
HOSTNAME=`uname -n`
11
# liste les comptes de chaque profile
11
# liste les comptes de chaque profile
12
function list () {
12
function list () {
13
	for i in $ALL_PROFILS
13
	for i in $ALL_PROFILS
14
	do
14
	do
15
	echo "Comptes liés au profil '$i' :"
15
	echo "Comptes liés au profil '$i' :"
16
	cat $DIR_KEY/key_only_$i | cut -d':' -f1|sort
16
	cat $DIR_KEY/key_only_$i | cut -d':' -f1|sort
17
	done
17
	done
18
}
18
}
19
# ajoute les comptes du profil "admin" aux autres profils
19
# ajoute les comptes du profil "admin" aux autres profils
-
 
20
# crée le fichier de clés contenant tous les compte (pour l'accès au centre de gestion)
20
function concat () {
21
function concat () {
21
	for i in $PROFILS
22
	for i in $PROFILS
22
	do
23
	do
23
		cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$i
24
		cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$i
24
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_$i
25
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_$i
-
 
26
		cat $DIR_KEY/key_only_$i >> $DIR_KEY/key_all
25
	done
27
	done
26
	cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$ADM_PROFIL
28
	cp -f $DIR_KEY/key_only_$ADM_PROFIL $DIR_KEY/key_$ADM_PROFIL
-
 
29
	cat $DIR_KEY/key_only_$ADM_PROFIL >> $DIR_KEY/key_all
27
	chown -R root:apache $DIR_KEY
30
	chown -R root:apache $DIR_KEY
28
	chmod 640 $DIR_KEY/key_*
31
	chmod 640 $DIR_KEY/key_*
29
}
32
}
30
 
33
 
31
usage="Usage: alcasar-profil.sh -list -add | -del | -pass"
34
usage="Usage: alcasar-profil.sh -list -add | -del | -pass"
32
nb_args=$#
35
nb_args=$#
33
args=$1
36
args=$1
34
 
37
 
35
# on met en place la structure minimale
38
# on met en place la structure minimale
36
if [ ! -e $DIR_KEY/key_$ADM_PROFIL ]
39
if [ ! -e $DIR_KEY/key_$ADM_PROFIL ]
37
then
40
then
38
	touch $DIR_KEY/key_$ADM_PROFIL
41
	touch $DIR_KEY/key_$ADM_PROFIL
39
fi
42
fi
40
cp -f $DIR_KEY/key_$ADM_PROFIL $DIR_KEY/key_only_$ADM_PROFIL
43
cp -f $DIR_KEY/key_$ADM_PROFIL $DIR_KEY/key_only_$ADM_PROFIL
41
for i in $PROFILS
44
for i in $PROFILS
42
do
45
do
43
	if [ ! -e $DIR_KEY/key_only_$i ]
46
	if [ ! -e $DIR_KEY/key_only_$i ]
44
		then
47
	then
45
		touch $DIR_KEY/key_only_$i
48
		touch $DIR_KEY/key_only_$i
46
	fi
49
	fi
47
done
50
done
-
 
51
if [ ! -e $DIR_KEY/key_all ]
-
 
52
then
-
 
53
	touch $DIR_KEY/key_all
-
 
54
fi
48
concat
55
concat
49
if [ $nb_args -eq 0 ]
56
if [ $nb_args -eq 0 ]
50
then
57
then
51
	echo $usage
58
	echo $usage
52
	exit 0
59
	exit 0
53
fi
60
fi
54
case $args in
61
case $args in
55
	-\? | -h* | --h*)
62
	-\? | -h* | --h*)
56
		echo "$usage"
63
		echo "$usage"
57
		exit 0
64
		exit 0
58
		;;
65
		;;
59
	-add)	
66
	-add)	
60
		# ajout d'un compte
67
		# ajout d'un compte
61
		list
68
		list
62
		echo -n "Choisissez un profil ($ALL_PROFILS) : "
69
		echo -n "Choisissez un profil ($ALL_PROFILS) : "
63
		read profil
70
		read profil
64
		echo -n "Entrez le nom du compte à créer (profil '$profil') : "
71
		echo -n "Entrez le nom du compte à créer (profil '$profil') : "
65
		read account
72
		read account
66
		# on teste s'il n'existe pas déjà
73
		# on teste s'il n'existe pas déjà
67
		for i in $ALL_PROFILS
74
		for i in $ALL_PROFILS
68
		do
75
		do
69
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
76
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
70
			for j in $tmp_account
77
			for j in $tmp_account
71
				do
78
				do
72
				if [ "$j" = "$account" ]
79
				if [ "$j" = "$account" ]
73
					then echo "Ce compte existe déjà"
80
					then echo "Ce compte existe déjà"
74
					exit 0
81
					exit 0
75
				fi
82
				fi
76
				done
83
				done
77
		done
84
		done
78
		/usr/sbin/htdigest $DIR_KEY/key_only_$profil $HOSTNAME $account
85
		/usr/sbin/htdigest $DIR_KEY/key_only_$profil $HOSTNAME $account
79
		concat
86
		concat
80
		list
87
		list
81
		;;
88
		;;
82
	-del)
89
	-del)
83
		# suppression d'un compte
90
		# suppression d'un compte
84
		list
91
		list
85
		echo -n "entrez le nom du compte à supprimer : "
92
		echo -n "entrez le nom du compte à supprimer : "
86
		read account
93
		read account
87
		for i in $ALL_PROFILS
94
		for i in $ALL_PROFILS
88
			do
95
			do
89
			$SED "/^$account:/d" $DIR_KEY/key_only_$i
96
			$SED "/^$account:/d" $DIR_KEY/key_only_$i
90
			done
97
			done
91
		concat
98
		concat
92
		list
99
		list
93
		;;
100
		;;
94
	-pass)
101
	-pass)
95
		# changement du mot de passe d'un compte
102
		# changement du mot de passe d'un compte
96
		list
103
		list
97
		echo "Changement de mot de passe"
104
		echo "Changement de mot de passe"
98
		echo -n "Entrez le nom du compte : "
105
		echo -n "Entrez le nom du compte : "
99
		read account
106
		read account
100
		for i in $ALL_PROFILS
107
		for i in $ALL_PROFILS
101
		do
108
		do
102
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
109
			tmp_account=`cat $DIR_KEY/key_only_$i | cut -d':' -f1`
103
			for j in $tmp_account
110
			for j in $tmp_account
104
				do
111
				do
105
				if [ "$j" = "$account" ]
112
				if [ "$j" = "$account" ]
106
					then
113
					then
107
					/usr/sbin/htdigest $DIR_KEY/key_only_$i $HOSTNAME $account
114
					/usr/sbin/htdigest $DIR_KEY/key_only_$i $HOSTNAME $account
108
				fi
115
				fi
109
				done
116
				done
110
		done
117
		done
111
		concat
118
		concat
112
		;;
119
		;;
113
	-list)
120
	-list)
114
		# liste des comptes par profile
121
		# liste des comptes par profile
115
		list
122
		list
116
		;;
123
		;;
117
	*)
124
	*)
118
		echo "Argument inconnu :$1";
125
		echo "Argument inconnu :$1";
119
		echo "$usage"
126
		echo "$usage"
120
		exit 1
127
		exit 1
121
		;;
128
		;;
122
esac
129
esac
123
 
130