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.

Entradas relacionadas: