Subversion Repositories ALCASAR

Rev

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

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