-
Notifications
You must be signed in to change notification settings - Fork 7
/
gestionusuarios.sh
156 lines (143 loc) · 4.62 KB
/
gestionusuarios.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#!/bin/bash
source funciones.sh
compruebaRoot
OPCIONES=(
"Añadir/eliminar usuarios y gestión de contraseñas."
"Crear/eliminar grupos."
"Modificar el grupo al que pertenece un usuario."
"Cambiar el propietario de un archivo/directorio."
"Comprobar qué usuarios existen y cuáles están conectados."
"Salir."
)
aniadirUsuario() {
usuario=$1
if adduser $usuario; then
read -p "¿Quieres definir la caducidad de la contraseña? [s/N]" res
if [[ "$res" =~ ^[Ss]$ ]]; then
numDias="NOPE"
until [[ "$numDias" =~ ^[0-9]+$ ]]; do
read -p "Introduce el numero de días: " numDias
done
chage -M $numDias $usuario
fi
echo-v "El usuario '$usuario' se ha creado correctemente"
else
echo-r "No se ha podido crear el usuario '$usuario'"
fi
}
borrarUsuario() {
usuario=$1
homeDir=`grep $usuario /etc/passwd | cut -d':' -f6`
if userdel $usuario; then
mensaje="Se ha eliminado correctamente el usuario '$usuario'";
read -p "¿Quieres borrar el directorio del usuario? [s/N]" res
if [[ "$res" =~ ^[Ss]$ ]]; then
rm -rf $homeDir
mensaje="$mensaje y su directorio personal"
fi
echo-v "$mensaje"
else
echo-r "No se ha podido eliminar el usuario '$usuario'"
fi
}
aniadirGrupo() {
grupo=$1
if groupadd $grupo 2> /dev/null; then
echo-v "El grupo '$grupo' se ha creado correctamente"
else
echo-r "No se ha podido crear el grupo '$grupo'"
fi
}
borrarGrupo() {
grupo=$1
if groupdel $grupo 2> /dev/null; then
echo-v "El grupo '$grupo' se ha eliminado correctamente"
else
echo-r "No se ha podido eliminar el grupo '$grupo'"
fi
}
modificarGrupoDe() {
pideInformacion "nombre de grupo"
usuario=$1
grupo=$INFO_PEDIDA
if usermod -aG $grupo $usuario 2> /dev/null; then
echo-v "Se ha agregado correctamente '$usuario' al grupo '$grupo'"
else
echo-r "No se ha podido agregar '$usuario' al grupo '$grupo'"
fi
}
cambiarOwner() {
pideInformacion "nombre de directorio o fichero"
nuevoPropietario=$1
fichero="$INFO_PEDIDA"
if [ -e "$fichero" ]; then
chown -R $nuevoPropietario "$fichero"
echo-v "Se ha asignado correctamente el usuario '$usuario' como"
echo-v "nuevo propietario de '$fichero'"
else
echo-r "El fichero '$fichero' no se encuentra"
echo-r "Por favor indique una ruta relativa/absotuta hacia el"
fi
}
listarUsuarios() {
echo "- Todos los usuarios:"
imprimeColoreado /etc/passwd ':'
echo "- Usuarios conectados:"
echo-v "$(who)"
}
mostrarMenu() {
echo -e "\n== MENÚ DEL GESTIÓN de usuarios y grupos =="
select OP in "${OPCIONES[@]}"; do
case "$OP" in
"${OPCIONES[0]}")
echo -e "\nIntroduce A para añadir un usuario, y D para borrarlo"
read -p "#? " res
if [[ "$res" =~ ^[Aa]$ ]]; then
pideInformacion "nombre de usuario"
aniadirUsuario $INFO_PEDIDA
elif [[ "$res" =~ ^[Dd]$ ]]; then
pideInformacion "nombre de usuario"
borrarUsuario $INFO_PEDIDA
else
echo-r "'$res' no es una opción válida"
fi
mostrarMenu
;;
"${OPCIONES[1]}")
echo -e "\nIntroduce A para añadir un grupo, y D para borrarlo"
read -p "#? " res
if [[ "$res" =~ ^[Aa]$ ]]; then
pideInformacion "nombre de grupo"
aniadirGrupo $INFO_PEDIDA
elif [[ "$res" =~ ^[Dd]$ ]]; then
pideInformacion "nombre de grupo"
borrarGrupo $INFO_PEDIDA
else
echo-r "'$res' no es una opción válida"
fi
mostrarMenu
;;
"${OPCIONES[2]}")
echo
pideInformacion "nombre de usuario"
modificarGrupoDe $INFO_PEDIDA
mostrarMenu
;;
"${OPCIONES[3]}")
echo
pideInformacion "nuevo propietario"
cambiarOwner $INFO_PEDIDA
mostrarMenu
;;
"${OPCIONES[4]}")
echo
listarUsuarios
mostrarMenu
;;
"${OPCIONES[5]}") echo -e "\nHasta luego"; exit ;;
*) echo-r "Seleccione una opción válida"
esac
done
}
clear
mostrarMenu