Script Bash para gestionar usuarios y grupos en Linux

InformáticaActualizado el 7,17 KB

Resumen

Este documento describe un script Bash con menú interactivo para administrar usuarios en Linux: alta individual y masiva, gestión de grupos secundarios, consulta de información con finger y who, y cambio de expiración de contraseñas. También indica los requisitos previos para su correcto funcionamiento.

Puntos clave

  • El script principal interactúa con un archivo de funciones externo (funciones.sh) y muestra un menú con seis opciones más la de salir.
  • La creación masiva de usuarios lee un archivo BD-usuarios.csv con el formato nombre#comentario#home#shell.
  • La gestión de grupos secundarios usa usermod -aG para añadir usuarios y gpasswd -d para quitarlos.
  • La consulta de información de usuarios utiliza los comandos finger y who.
  • El cambio de expiración de contraseña se realiza con chage -E y una fecha en formato YYYY-MM-DD.
  • Se requieren permisos sudo y los comandos useradd, usermod, gpasswd, finger, who y chage disponibles en el sistema.

Ponte a prueba

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.

Descargar

PDF Word HTML

Preguntas frecuentes

¿Qué formato debe tener el archivo para la creación masiva de usuarios?

El archivo BD-usuarios.csv debe seguir el formato nombre#comentario#home#shell, con los campos separados por almohadillas, y debe estar en el mismo directorio que el script.

¿Qué comando se usa para quitar un usuario de un grupo secundario?

Se utiliza sudo gpasswd -d seguido del nombre del usuario y del grupo.

¿Qué se necesita para ejecutar correctamente el script?

Hace falta tener el archivo funciones.sh accesible, los comandos de gestión de usuarios disponibles y permisos sudo para el usuario que ejecuta el script.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué archivo externo necesita el script principal para funcionar?
2. ¿Qué separador se utiliza en el archivo BD-usuarios.csv?
3. ¿Qué comando se emplea para añadir un usuario a un grupo secundario?
4. ¿Qué formato de fecha exige la opción de cambiar la expiración de la contraseña?
5. ¿Qué comando muestra los usuarios actualmente conectados?
6. ¿Qué permisos necesita el usuario que ejecuta el script?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.