Subversion Repositories ALCASAR

Rev

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