Linux Users · 11 min read · Dec 15, 2025
Cómo agregar usuarios al sistema operativo Linux desde un archivo de texto
Cómo agregar usuarios al sistema operativo Linux desde un archivo de texto
Este tutorial trata sobre un script de bash para agregar, eliminar y verificar los usuarios ya sea desde un archivo de texto; también puede agregar, eliminar y modificar los usuarios manualmente. Este script se puede utilizar para agregar, eliminar y verificar los usuarios en el sistema operativo Linux al obtener la información del usuario de cualquier archivo de texto y este script también puede agregar, eliminar o verificar los usuarios manualmente, he puesto ambas funciones en un solo archivo de script. El archivo de texto puede ser especificado por el administrador.
:-) !!!El script es totalmente amigable para el usuario!!! :-)
Puedes encontrar el script al final de este tutorial.
Iniciando el Script
Cuando inicias el script, aparecerá un menú como este:
MENÚ
AGREGAR USUARIOS
Verificar Usuarios
Eliminar Usuarios
4. SALIR1. Agregar Usuarios
Ahora selecciona la opción
1. AGREGAR USUARIOS
del menú presionando
“1”
desde el teclado.
Ahora el script confirma que el usuario debe ser root, y sabemos que el UID de root es cero (0). Así que primero comparo el UID del usuario actual con el cero (0), si el UID no coincide con el UID de root, entonces mostrará el siguiente mensaje:
**¡Debes ser el usuario root para ejecutar este script!y si el
UID
coincide con el UID de root, entonces muestra el siguiente mensaje y ejecuta el script:
*Identidad Verificada_ Eres el Root*
Podemos verificar el UID del usuario actual escribiendo el siguiente comando en la terminal:
echo $UIDSi el usuario es root, entonces se realizará la función 1.AGREGAR USUARIOS.
Ahora el script preguntará al usuario si desea agregar los usuarios manualmente o dejar que el script obtenga la información del usuario del archivo de texto. Para eso, mostrará el siguiente menú:
#########################################
“¡Por favor selecciona el modo!!!
- Agregar los Usuarios Manualmente
2.Leer los Usuarios Automáticamente desde el Archivo de Texto###########################################
Ahora, si el usuario selecciona 1. Agregar los Usuarios Manualmente, entonces el script pedirá al usuario el nombre de usuario, grupo y contraseña; utilizará los siguientes comandos para el nombre de usuario y grupo:
read usr_nameread usr_groupAhora, utilizando la información anterior, agregará el usuario utilizando el siguiente comando:
useradd -g $usr_group -m $usr_namePara la contraseña, utilizará el siguiente comando:
passwd $usr_nameAhora, si el usuario selecciona la opción 2.Leer los Usuarios Automáticamente desde el Archivo de Texto, entonces el script localizará el archivo de texto y verificará que exista, luego leerá la información como nombre de usuario, grupo, contraseña del archivo de texto.
Ahora el script mostrará el directorio de trabajo actual donde debe estar ubicado el archivo de texto al usuario, utilizando el siguiente comando:
echo $(pwd)/users.txt
Ahora el script pregunta si la ruta anterior del archivo de texto es correcta o si deseas ingresar la ruta del archivo manualmente, mostrará el siguiente mensaje al usuario:
¿Quieres usar la RUTA POR DEFECTO anterior? Sí=1 & No=2Si el usuario presiona 1 para Sí, entonces el script cargará el archivo de texto desde la ruta mostrada, utilizando el siguiente comando:
Path=$($pwd)users.txtSi el usuario presiona 2 para No, entonces el script pedirá al usuario que ingrese la ruta correcta para el archivo de texto y leerá la ruta del archivo utilizando el siguiente comando:
read PathLa ruta del archivo de texto se almacena en la variable “Path”. El siguiente comando se utilizará para verificar la existencia del archivo:
if [ -e $Path ];Extraerá el nombre de usuario del archivo de texto utilizando el siguiente comando:
Username=`grep "Username00$num" $Path | cut -f2 -d:`Extraerá el grupo del archivo de texto utilizando el siguiente comando:
Group=`grep "Group" $Path |cut -f2 -d:`Extraerá la contraseña del archivo de texto utilizando el siguiente comando:
Password=`grep "Password" $Path | cut -f2 -d:`Ahora el script utiliza las variables que contienen la información sobre los usuarios y los agrega al sistema operativo Linux, utilizando los siguientes comandos:
Para agregar un grupo, utilizará el siguiente comando:
groupadd $GroupPara agregar los usuarios al grupo, utilizará el siguiente comando:
useradd -g $Group -m $UsernamePara establecer la contraseña para todos los usuarios, utiliza el siguiente comando:
echo $Password | /usr/bin/passwd --stdin $UsernameContraseña es la variable que contiene la misma contraseña para todos los usuarios, se extrae del archivo de texto.
2. Verificar Usuarios
Desde el menú:
### MENÚ ###- AGREGAR USUARIOS
- Verificar Usuarios
- Eliminar Usuarios
- SALIR
Si el usuario selecciona la opción 2. Verificar Usuarios, aparecerá otro menú como:
#################################
¡Por favor selecciona el modo!!!
1.Verificar Todos los Usuarios del Sistema2.Verificar Todos los Usuarios del ARCHIVO de texto
#################################
Desde el menú anterior, si el usuario selecciona la opción 1.Verificar Todos los Usuarios del Sistema, entonces todos los usuarios del sistema se mostrarán al usuario, he utilizado el siguiente comando para este propósito:
cat /etc/passwd |grep bashEl resultado del comando en mi caso devolverá los siguientes usuarios bash:
root:x:0:0:root:/root:/bin/bash
lucky:x:501:501:Lucky:/home/lucky:/bin/bash
Ahora, si el usuario selecciona la opción 2.Verificar Todos los Usuarios del ARCHIVO de texto, entonces se verificarán todos los usuarios que se mencionan en el archivo de texto. En mi caso, he utilizado el siguiente comando para verificar los usuarios del archivo de texto, ya sea que se hayan agregado al sistema operativo Linux o no, y cuántos usuarios tengo.
Para verificar los usuarios, he utilizado el siguiente comando en mi script:
Path=$($pwd)users.txt
varify=grep "varify" $Path |cut -f2 -d:
cat /etc/passwd | grep $varify
Verificar es la variable que contiene el valor único de los nombres de usuario.
Para mostrar el número total de usuarios, he utilizado el siguiente comando:
echo -e “\nActualmente tienes”
cat /etc/passwd | grep $varify |wc -l;
echo “usuarios agregados desde tu archivo de texto”
El resultado del comando anterior en mi caso es:
fa05btn001:x:502:502::/home/fa05btn001:/bin/bash
fa05btn002:x:503:502::/home/fa05btn002:/bin/bash
fa05btn003:x:504:502::/home/fa05btn003:/bin/bash
fa05btn004:x:505:502::/home/fa05btn004:/bin/bash
fa05btn005:x:506:502::/home/fa05btn005:/bin/bash
fa05btn006:x:507:502::/home/fa05btn006:/bin/bash
fa05btn007:x:508:502::/home/fa05btn007:/bin/bash
fa05btn008:x:509:502::/home/fa05btn008:/bin/bash
Actualmente tienes 8 usuarios agregados desde tu archivo de texto
3. Eliminar Usuarios
Desde el menú:
MENÚ
AGREGAR USUARIOS
Verificar Usuarios
Eliminar Usuarios
4. SALIRSi el usuario selecciona la opción 3. Eliminar Usuarios, entonces se verificará que el usuario sea root antes de continuar. Si el usuario se verifica como root con éxito, entonces aparecerá otro menú como:
##############################################
¡Por favor selecciona el modo!!!
1.Eliminar Usuario Específico
2.Eliminar todos los Usuarios Especificados en el ARCHIVO DE TEXTO
##############################################
Ahora, desde el menú anterior, si el usuario selecciona la opción 1.Eliminar Usuario Específico, entonces el script mostrará los usuarios actuales del sistema y pedirá al usuario que ingrese el nombre del usuario a eliminar.
Para mostrar todos los usuarios del sistema, he utilizado el siguiente comando:
cat /etc/passwd |grep bash El comando anterior mostrará el siguiente resultado:
Actualmente tienes los siguientes USUARIOS Agregados a tu Sistema
root:x:0:0:root:/root:/bin/bash
lucky:x:501:501:Lucky:/home/lucky:/bin/bash
fa05btn001:x:502:502::/home/fa05btn001:/bin/bash
fa05btn002:x:503:502::/home/fa05btn002:/bin/bash
fa05btn003:x:504:502::/home/fa05btn003:/bin/bash
fa05btn004:x:505:502::/home/fa05btn004:/bin/bash
fa05btn005:x:506:502::/home/fa05btn005:/bin/bash
fa05btn006:x:507:502::/home/fa05btn006:/bin/bash
fa05btn007:x:508:502::/home/fa05btn007:/bin/bash
fa05btn008:x:509:502::/home/fa05btn008:/bin/bash
Escribe el Nombre del Usuario que deseas Eliminar:Ahora se le pedirá al usuario que ingrese el nombre del usuario a eliminar, y cuando el usuario ingrese el nombre del usuario que desea eliminar, el sistema operativo Linux buscará al usuario en el archivo anterior y eliminará al usuario utilizando el siguiente comando:
read user_name
userdel -r $user_name
Ahora, si el usuario selecciona la opción
2.Eliminar todos los Usuarios Especificados en el ARCHIVO DE TEXTO
entonces el script eliminará todos los usuarios listados en ese archivo de texto.
El siguiente comando extraerá los nombres de usuario del archivo de texto:
Username=`grep "Username00$num" $Path | cut -f2 -d:`El siguiente segmento de script irá al final del archivo y terminará el bucle:
if [ $Username == “EOF” ]; then
clear
main
fi
El siguiente comando eliminará los usuarios listados en el archivo de texto:
userdel -r $UsernameNota: He probado mi script ADDUSER.sh en PCLinuxOS, y espero que también funcione bien en otras distribuciones de Linux. Cualquiera puede modificar el código también, y por favor compártelo con otros.
Que tengas un buen tiempo. :-)
EL SIGUIENTE ES EL SCRIPT COMPLETO PARA AGREGAR, ELIMINAR y VERIFICAR LOS USUARIOS EN EL SISTEMA OPERATIVO LINUX.
Creado por USMAN AKRAM (ajaonchat)
#!/bin/bash ############################################################### #Este Script fue creado por # # USMAN AKRAM (ajaonchat) # # FA05-BTN-005 # # BTN-6 # ############################################################### add_users() { ROOT_UID=0 #El usuario root tiene un UID de 0 if [ "$UID" -ne "$ROOT_UID" ]; then echo "¡Debes ser el usuario root para ejecutar este script!**" exit fi echo echo Identidad Verificada_ Eres el Root echo echo -e "\n#########################################\n" echo -e "Por favor selecciona el modo!!!\n" echo -e "1. Agregar los Usuarios Manualmente\n 2.Leer los Usuarios Automáticamente desde el Archivo de Texto\n" echo -e "###########################################" read add_opt case $add_opt in 1) echo -e "Por favor ingresa el nombre de usuario:" read usr_name echo -e "Por favor ingresa el grupo de usuario" read usr_group groupadd $usr_group useradd -g $usr_group -m $usr_name echo -e "Por favor ingresa la contraseña para el usuario $usr_name" passwd $usr_name ;; 2) echo echo "El directorio de trabajo actual es: `pwd`/users.txt" echo echo -e "¿Quieres usar la RUTA POR DEFECTO anterior? Sí=1 & No=2" read yn if [ $yn == 1 ]; then Path=$($pwd)users.txt else echo -n "Por favor ingresa la ruta correcta al archivo (por ejemplo, /root/folder/filename.txt): " read Path fi if [ -e $Path ]; then #Si el archivo especificado por el usuario existe Username=lucky num=1 while [ $Username != "EOF" ] do Username=`grep "Username00$num" $Path | cut -f2 -d:` #Extraer Nombre de Usuario del archivo de texto num=$(($num+1)) Password=`grep "Password" $Path | cut -f2 -d:` #Extraer Contraseña del archivo de texto Group=`grep "Group" $Path |cut -f2 -d:` #Extraer Grupo del archivo de texto groupadd $Group #Agrega usuario al sistema y le asigna una contraseña if [ $Username == "EOF" ]; then clear main fi #Agrega usuario al sistema useradd -g $Group -m $Username #Agregar contraseña de usuarios echo $Password | /usr/bin/passwd --stdin $Username #la contraseña del usuario será asignada done else #Si el archivo especificado por el usuario no existe echo -e "\n#############################################" echo -e "\n######¡NO SE PUEDE ENCONTRAR O LOCALIZAR EL ARCHIVO!!!!#####" echo -e "\n#############################################" fi;; *) echo -e "¡Has seleccionado la opción incorrecta!!!" esac } varify() { echo -e "#################################" echo -e "¡Por favor selecciona el modo!!!\n" echo -e "1.Verificar Todos los Usuarios del Sistema\n 2.Verificar Todos los Usuarios del ARCHIVO de texto\n" echo -e "#################################" read varify_user case $varify_user in 1) cat /etc/passwd |grep bash;; 2) echo echo "El directorio de trabajo actual es: `pwd`/users.txt" echo echo -e "¿Quieres usar la RUTA POR DEFECTO anterior? Sí=1 & No=2" read yn if [ $yn == 1 ]; then Path=$($pwd)users.txt else echo -n "Por favor ingresa la ruta correcta al archivo (por ejemplo, /root/folder/filename.txt): " read Path fi if [ -e $Path ]; then Path=$($pwd)users.txt varify=`grep "varify" $Path |cut -f2 -d:` cat /etc/passwd | grep $varify echo -e "\nActualmente tienes " cat /etc/passwd | grep $varify |wc -l echo "usuarios agregados desde tu archivo de texto" else #Si el archivo especificado por el usuario no existe echo -e "\n#############################################" echo -e "\n######¡NO SE PUEDE ENCONTRAR O LOCALIZAR EL ARCHIVO!!!!#####" echo -e "\n#############################################" fi ;; *) echo -e "Opción incorrecta" esac } del_users() { #¡Este Script eliminará los Usuarios del DIRECTORIO PERSONAL!!!!! ROOT_UID=0 #El usuario root tiene un UID de 0 if [ "$UID" -ne "$ROOT_UID" ]; then echo "**¡Debes ser el usuario root para ejecutar este script!**" exit fi echo echo Identidad Verificada_ Eres el Root echo echo echo "El directorio de trabajo actual es: `pwd`/students.txt" echo #Este es el Menú para seleccionar el modo de eliminación de los usuarios, ya sea eliminar el usuario seleccionado o eliminar todos los usuarios que tienes en el ARCHIVO DE TEXTO...??? echo -e "####################################" echo -e "\n¡Por favor selecciona el modo!!!\n 1.Eliminar Usuario Específico\n 2.Eliminar todos los Usuarios Especificados en el ARCHIVO DE TEXTO\n" echo -e "####################################" read del_opt case $del_opt in 1) echo -e "\n\nActualmente tienes los siguientes USUARIOS Agregados a tu Sistema\n" cat /etc/passwd |grep bash echo -e "\n\n Escribe el Nombre del Usuario que deseas Eliminar:" read user_name userdel -r $user_name ;; 2) echo echo "El directorio de trabajo actual es: `pwd`/users.txt" echo echo -e "¿Quieres usar la RUTA POR DEFECTO anterior? Sí=1 & No=2" read yn if [ $yn == 1 ]; then Path=$($pwd)users.txt else echo -n "Por favor ingresa la ruta correcta al archivo (por ejemplo, /root/folder/filename.txt): " read Path fi if [ -e $Path ]; then #Si el archivo especificado por el usuario existe num=1 Username=lucky while [ $Username != "EOF" ] do Username=`grep "Username00$num" $Path | cut -f2 -d:` #Extraer Nombre de Usuario del archivo de texto if [ $Username == "EOF" ]; then clear main fi userdel -r $Username num=$(($num+1)) done else #Si el archivo especificado por el usuario no existe echo -e "\n#############################################" echo -e "\n######¡NO SE PUEDE ENCONTRAR O LOCALIZAR EL ARCHIVO!!!!#####" echo -e "\n#############################################" fi ;; *) echo -e "Opción incorrecta" esac } main() { opt=1 while [ $opt -le 4 ] do clear echo -e " ### MENÚ ###\n 1. AGREGAR USUARIOS\n 2. Verificar Usuarios\n 3. Eliminar Usuarios\n 4. SALIR\n" read opt case $opt in 1) add_users ;; 2) varify ;; 3) del_users ;; 4) exit 0 ;; *) echo -e "¡Has ingresado la opción incorrecta!!!" esac echo -e "\n¿Quieres ejecutar el script nuevamente? Sí=1 & No=4." read opt done } main exit 0
Este es el archivo de texto que utilicé con mi script
#######################################################
CREADO POR
USMAN AKRAM (LUCKY)
FA05-BTN-005
[email protected]
#######################################################
Cuenta de Estudiante de COMSATS Abbottabad
==============================
Nombre del archivo:users.txt
Año:2008
Campus:CIIT-ABTD
Grupo:btn
##¡Los siguientes son los usuarios que se agregarán al DIRECTORIO PERSONAL!!!
Username001:fa05btn001
Username002:fa05btn002
Username003:fa05btn003
Username004:fa05btn004
Username005:fa05btn005
Username006:fa05btn006
Username007:fa05btn007
Username008:fa05btn008
Username009:EOF
#será el usuario final
verificar:fa05btn
Contraseña:123456
Fin del Archivo de Texto!!!!Creado por USMAN AKRAM(Lucky), Estudiante de la Universidad COMSATS Abbottabad [BS(TN)-6] Dirección de correo electrónico: [email protected]
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.