Subversion Repositories ALCASAR

Rev

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