Subversion Repositories ALCASAR

Rev

Go to most recent revision | Details | Last modification | View Log

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