Subversion Repositories ALCASAR

Rev

Rev 389 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log

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