Subversion Repositories ALCASAR

Rev

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

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