Administración de Usuarios y Procesos en Shell Scripting Linux
Funciones de Administración de Sistema en Bash
El siguiente script en Bash define varias funciones esenciales para la administración de usuarios, procesos y directorios en un sistema Linux.
Función: Consulta de Usuarios (`usuarios`)
Esta función proporciona un menú interactivo para consultar información detallada sobre los usuarios y grupos del sistema.
Menú de Usuarios del Sistema
echo "**BIENVENIDOS A USUARIOS DEL SISTEMA**"- Usuarios con posible sesión iniciada en el sistema
- Todos los Usuarios del Sistema
- Usuarios con sesión iniciada (logueados)
- Grupos
- Contraseñas cifradas
- Volver al menú principal
- Salir
echo "Introduce una opción:"
read opu
clear
case $opu inOpciones del Menú de Usuarios
1. Usuarios con posible sesión iniciada en el sistema
Muestra el usuario root y aquellos usuarios cuyo UID (Identificador de Usuario) se encuentra en un rango específico (1000 a 1099), asumiendo que estos son usuarios con posible acceso interactivo.
1) echo "USUARIOS CON POSIBLE SESIÓN INICIADA EN EL SISTEMA:"
cat /etc/passwd | grep 0:0 | cut -d ":" -f1 # Para mostrar a root
id=1000
while [ $id -ne 1100 ]
do # El identificador nos permite ver los usuarios con posible sesión iniciada, ya que todos tienen un número mayor a 1000. También podríamos hacer un grep con /bin/bash para que nos lo mostrara, es otra posibilidad.
cat /etc/passwd | grep $id | cut -d ":" -f1
id=`expr $id + 1`
done
volver;;2. Todos los Usuarios del Sistema
2) echo "TODOS LOS USUARIOS DEL SISTEMA"
cat /etc/passwd | cut -d ":" -f1
volver;;3. Usuarios con sesión iniciada (Logueados)
3) echo "USUARIOS LOGUEADOS:"
who | cut -d " " -f1
volver;;4. Grupos de Usuarios
4) echo "GRUPOS DE USUARIOS"
cat /etc/group | cut -f -1,4 -d ":"
volver;;5. Contraseñas Cifradas
Permite consultar la contraseña cifrada de un usuario específico desde /etc/shadow, verificando primero si el directorio /home/<usuario> existe.
5)
echo "Contraseñas Cifradas"
echo "Introduce el usuario del que quieres ver la contraseña"
read cifra
if [ -d /home/$cifra ]
then
cat /etc/shadow | grep $cifra | cut -d ":" -f2
else
echo "¡¡¡USUARIO INCORRECTO!!!"
fi
volver;;6. Volver al menú principal
6) menu;;7. Salir
7) salir;;Opción Incorrecta
*) clear
echo "Opción introducida incorrecta"
usuarios;;
esac
}Función: Consulta de Procesos (`procesos`)
Permite listar los procesos activos asociados a un usuario específico utilizando el comando ps U.
function procesos() {
clear
echo "**BIENVENIDO A PROCESOS DE LOS USUARIOS**"
echo "Introduce el usuario del que quieres ver los procesos"
read procusuario
if [ -d /home/$procusuario ] || [ -d /$procusuario ] # La carpeta del root está en /root, no en /home/root, por eso se incluye la otra condición.
then
ps U $procusuario
else
echo "El usuario introducido no existe"
fi
volver
}Función: Consulta de Directorios (`directorios`)
Muestra el contenido detallado (ls -l) del directorio principal del usuario, manejando el caso especial del usuario root.
function directorios() {
echo "BIENVENIDO A DIRECTORIOS DE LOS USUARIOS"
echo "¿De qué usuario desea ver el contenido de su directorio?"
read direcusuario
if [ -d /home/$direcusuario ]
then
ls -l /home/$direcusuario
elif [ -d /$direcusuario ] # Esto se hace para manejar el caso del usuario root.
then
ls -l /$direcusuario
else
echo "El usuario introducido no existe"
fi
volver
}Función: Gestión Avanzada de Usuarios (`gestion`)
Esta función permite realizar modificaciones y mantenimiento en las cuentas de usuario del sistema.
Menú de Gestión de Usuarios
echo "**BIENVENIDO A GESTIÓN DE USUARIOS**"- Agregar nuevo usuario
- Borrar usuario
- Modificar usuario
- Cambiar contraseña
- Configuración por defecto
- Volver al menú principal
- Salir
echo "Introduce una opción:"
read opg
case $opg inOpciones de Gestión
1. Agregar Nuevo Usuario
1) clear
echo "**AGREGAR NUEVO USUARIO**"
echo "Introduce el nombre que quiere darle al usuario"
read newusuario
adduser $newusuario
cd /home/$newusuario # Para crear el directorio y que no dé error al comprobar usuario
echo "USUARIO $newusuario HA SIDO CREADO"
volver;;2. Borrar Usuario
2) clear
echo "**BORRAR USUARIO**"
echo "Introduce el nombre del usuario que desea borrar"
read dropusuario
if [ -d /home/$dropusuario ]
then
userdel $dropusuario
echo "USUARIO $dropusuario HA SIDO BORRADO"
else
echo "El usuario introducido no existe"
fi
volver;;3. Modificar Usuario
3) clear
echo "**MODIFICAR USUARIO**"
echo "Introduce el usuario a modificar"
read modusuario
if [ -d /home/$modusuario ]
then
echo "Introduce la opción -p (password), -l (login), etc."
read modop
echo "Introduce la modificación"
read mod
usermod $modop $mod $modusuario
echo "USUARIO $modusuario HA SIDO MODIFICADO"
volver
else
echo "¡¡USUARIO INCORRECTO!!"
gestion
fi;;4. Cambiar Contraseña
4) clear
echo "**CAMBIAR CONTRASEÑA**"
echo "Introduce el nombre del usuario al que deseas cambiar la contraseña"
read passusuario
if [ -d /home/$passusuario ]
then
passwd $passusuario
else
echo "El usuario introducido no existe"
fi
volver;;5. Configuración por Defecto
5) clear
echo "MODIFICAR CONFIGURACIÓN"
echo "1. Mostrar configuración"
echo "2. Cambiar configuración"
echo "Introduce una opción"
read opmod
if [ $opmod -eq 1 ]
then
/usr/sbin/useradd -D
elif [ $opmod -eq 2 ]
then
sudo nano /etc/default/useradd
else
echo "¡¡OPCIÓN INCORRECTA!!"
fi
volver;;6. Volver al menú principal
6) menu;;7. Salir
7) salir;;Opción Incorrecta
*) clear
echo "¡¡OPCIÓN INCORRECTA!!"
gestion;;
esac
}