Subversion Repositories ALCASAR

Rev

Rev 316 | Rev 434 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log

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