Subversion Repositories ALCASAR

Rev

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

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