Subversion Repositories ALCASAR

Rev

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