Automatización de la Gestión de Usuarios en Linux con Script Bash
Clasificado en Informática
Escrito el en español con un tamaño de 7,17 KB
Este documento describe un script Bash diseñado para simplificar la administración de usuarios en sistemas Linux. Ofrece un menú interactivo para realizar diversas tareas, desde la creación individual o masiva de usuarios hasta la gestión de grupos y la consulta de información del sistema.
Funcionalidades del Script de Gestión de Usuarios
El script principal, que se asume nombrado gestion_usuarios.sh
, interactúa con un archivo de funciones externo (funciones.sh
) y presenta un menú principal con las siguientes opciones:
Menú Principal de Administración de Usuarios
- 1. Añadir Usuarios Individuales: Permite crear un nuevo usuario especificando su nombre, directorio home y shell.
- 2. Creación Masiva de Usuarios: Facilita la creación de múltiples usuarios a partir de un archivo CSV (
BD-usuarios.csv
) con un formato predefinido. - 3. Gestión de Grupos Secundarios: Ofrece opciones para añadir o quitar usuarios de grupos secundarios existentes.
- 4. Información de Usuario (Finger): Permite consultar detalles de un usuario específico o listar usuarios conectados al sistema.
- 5. Usuarios Conectados (who): Muestra una lista concisa de todos los usuarios actualmente conectados.
- 6. Cambiar Expiración de Contraseña: Permite establecer una fecha de expiración para la contraseña de un usuario.
- 0. Salir del Script: Finaliza la ejecución del programa.
Código Fuente del Script Bash
A continuación, se presenta el código del script principal con las correcciones y mejoras aplicadas para una mejor legibilidad y funcionalidad:
#!/bin/bash
source funciones.sh
# Llamar a las funciones de la librería (asumiendo que 'saludar' está en funciones.sh)
while true; do
clear
saludar "Yousra" "Chergui"
echo "----------- MENÚ DE GESTIÓN DE USUARIOS -----------"
echo "0. Salir del Script"
echo "1. Añadir Usuarios Individuales"
echo "2. Creación Masiva de Usuarios"
echo "3. Añadir/Quitar Usuarios a Grupos Secundarios"
echo "4. Información de Usuario (Finger)"
echo "5. Usuarios Conectados (who)"
echo "6. Cambiar Expiración de Contraseña"
echo "---------------------------------------------------"
read -p "¿Qué opción desea elegir?: " opcion
case $opcion in
1)
echo "
Crear Usuario Individual
"
read -p "Especifica el nombre del usuario: " nombre
read -p "Especifica el directorio home del usuario: " home
read -p "Especifica el shell del usuario: " shellsudo useradd -m -d "$home" -s "$shell" "$nombre" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "El usuario ha sido creado exitosamente:"
cat /etc/passwd | grep "$nombre"
else
echo "Error: No se pudo crear el usuario."
fi
;;
2)
echo "
Creación Masiva de Usuarios
"
echo "Se espera un archivo 'BD-usuarios.csv' con formato: nombre#comentario#home#shell"
while IFS='#' read -r nombre comentario home shell; do
echo "Procesando: $nombre (Comentario: $comentario, Home: $home, Shell: $shell)"
sudo useradd -m -d "$home" -s "$shell" -c "$comentario" "$nombre" >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Usuario creado: $nombre"
cat /etc/passwd | grep "$nombre"
else
echo "Error: No se pudo crear el usuario $nombre."
fi
done < BD-usuarios.csv
read -p "Presiona Enter para continuar..." pausa
;;
3)
echo "
Gestión de Grupos Secundarios
"
echo "¿Deseas añadir o quitar usuarios de un grupo?"
echo "1) Añadir usuario a un grupo"
echo "2) Quitar usuario de un grupo"
read -p "Elige una opción: " subopcion
case $subopcion in
1)
echo "
Añadir usuario a un grupo secundario
"
read -p "Ingresa el nombre de usuario: " usuario
read -p "Nombre del grupo a añadir: " grupo
echo "Ejecutando..."
sudo usermod -aG "$grupo" "$usuario"
if [ $? -eq 0 ]; then
echo "El usuario '$usuario' ha sido añadido al grupo '$grupo' correctamente."
groups "$usuario"
else
echo "Error: No se pudo añadir el usuario '$usuario' al grupo '$grupo'."
fi
read -p "Presiona Enter para continuar..." p
;;
2)
echo "
Quitar usuario de un grupo secundario
"
read -p "Ingresa el nombre del usuario que desea quitar: " usuario
read -p "Nombre del grupo a quitar: " grupo
echo "Ejecutando..."
sudo gpasswd -d "$usuario" "$grupo"
if [ $? -eq 0 ]; then
echo "El usuario '$usuario' ha sido eliminado del grupo '$grupo' correctamente."
groups "$usuario"
else
echo "Error: No se pudo quitar al usuario '$usuario' del grupo '$grupo'."
fi
read -p "Presiona Enter para continuar..." pausa
;;
*)
echo "Opción no válida. Por favor, inténtelo de nuevo."
;;
esac
;;
4)
echo "
Información de Usuario (Finger)
"
echo "1. Ver información de un usuario específico"
echo "2. Ver usuarios conectados actualmente"
read -p "Introduce la opción que deseas: " subopcion
case $subopcion in
1)
echo "
Información detallada de usuario (finger)
"
read -p "Introduce el nombre del usuario: " usuario
echo "Mostrando información..."
finger "$usuario"
read -p "Presiona Enter para continuar..." pausa
;;
2)
echo "
Usuarios conectados (finger -l)
"
read -p "Introduce el nombre del usuario (dejar vacío para todos): " conectados
finger -l "$conectados"
read -p "Presiona Enter para continuar..." pausa
;;
*)
echo "Opción no válida. Por favor, inténtelo de nuevo."
;;
esac
;;
5)
echo "
Usuarios Conectados (who)
"
echo "Mostrando información..."
who
read -p "Presiona Enter para continuar..." pausa
;;
6)
echo "
Cambiar Expiración de Contraseña
"
read -p "Introduce el nombre del usuario al que quieres cambiar la expiración de la contraseña: " usuario
read -p "Introduce la fecha de expiración (YYYY-MM-DD): " fecha
echo "Realizando cambios..."
sudo chage -E "$fecha" "$usuario"
read -p "Presiona Enter para continuar..." pausa
;;
0)
echo "Saliendo del script. ¡Hasta pronto!"
exit
;;
*)
echo "Opción no válida. Por favor, inténtelo de nuevo."
;;
esac
read -p "Presiona Enter para volver al menú principal..." pausa
done
Consideraciones Adicionales
Para el correcto funcionamiento de este script, asegúrese de tener el archivo funciones.sh
en el mismo directorio o en una ruta accesible. Es fundamental que los comandos de gestión de usuarios como useradd
, usermod
, gpasswd
, finger
, who
y chage
estén disponibles en su sistema y que el usuario que ejecuta el script tenga los permisos sudo
necesarios para las operaciones de administración de usuarios.
Además, para la funcionalidad de creación masiva de usuarios, el archivo BD-usuarios.csv
debe estar presente en el mismo directorio que el script y seguir el formato especificado (nombre#comentario#home#shell
) para que la importación se realice correctamente.