useradd linux, el comando que utilizaras muchas veces para crear cuentas de usuario en distribuciones linux.
Ya sea en servidores o estaciones de trabajo, este comando junto a otros te sera de mucha utilidad con sus diversas opciones. Comenzamos?
Tabla de contenido
Que hace el comando useradd en linux?
Básicamente el comando useradd en Linux nos permite crear cuentas de usuario.
Estas cuentas de usuario por medio de parámetros podrán o no tener:
- Nombre de la cuenta
- Id de usuario
- Id de grupo
- Nombre de la persona o servicio
- Directorio personal o home
- Shell a usar
Los archivos que se modificaran serán passwd, shadow, group y gshadow, todos en el directorio /etc.
useradd vs adduser, cual utilizar?
No te confundas, useradd adduser, que hace cada cual. Bien, te explico.
El comando useradd es el que debes usar ya que adduser linux es un enlace simbólico a useradd.
Es decir, al ejecutar adduser, realmente estamos “llamando ” a useradd.
Te lo demuestro aquí debajo primero buscando su ubicación y después lo listamos con el comando ls.
which adduser
/usr/sbin/adduser
ls -la /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 nov 8 10:30 /usr/sbin/adduser -> useradd
Espero ya haberte aclarado este punto que confunde a muchos.
Prefieres verlo en vídeo?, aquí debajo te lo muestro.
Tiene ayuda el comando useradd linux?
Si, podemos aprender mas de este comando de dos formas y conocer los useradd parámetros.
man useradd, la mas completa
Como siempre, tendrás la información mas completa y actualizada en Linux haciendo uso de las paginas man.
man useradd
Pidiendo ayuda en consola para useradd linux
La otra forma algo mas rápida y sencilla es utilizar la ayuda del comando.
useradd --help
Ejemplos prácticos del comando useradd linux
Los siguientes ejemplos de uso de userdd te servirán en cualquier distribución linux.
Crear cuenta de usuario
Esta es la forma mas sencilla de crear una cuenta.
En caso de no estar desde la cuenta root, debemos ejecutar el comando con sudo.
Automáticamente se asignara un uid y gid (user id y group id) a la nueva cuenta ademas de una carpeta personal en /home.
sudo useradd pepe
Miremos los cambios realizados por el comando.
Utilizaremos el comando cat visto en un anterior articulo.
cat /etc/passwd
..
..
pepe:x:1001:1001::/home/pepe:/bin/bash
cat /etc/group
..
..
pepe:x:1001:
sudo cat /etc/shadow
..
drivemeca:$6$SYP5QUFxFoK1LK3e$tzEECuOI1abSlZssu7iVPRz14G/DErYxoRfl9N0YlKMRFEsv3EA8mQhTikgCzc92xSCucCkGtgR5qxMuK.4cw0:17928:0:99999:7:::
systemd-timesync:!!:17928::::::
deluge:!!:17931::::::
pkg-build:!!:17932::::::
pepe:!!:17946:0:99999:7:::
sudo cat /etc/gshadow
..
deluge:!::
pkg-build:!::drivemeca
pepe:!::
Mirando el contenido de los cuatro archivos manejados por useradd vemos primero que la estructura de /etc/passwd es:
- pepe: nombre de la cuenta
- 1001: UID identificador del usuario
- 1001: GID identificador del grupo asignado
- /home/pepe: Carpeta personal en /home
- /bin/bash: Shell (interprete) a ejecutarse cuando se conecte esta cuenta
Nota: el UID 0 es reservado para la cuenta root.
Continuando vemos que el grupo en /etc/group es creado con el mismo nombre de la cuenta y el mismo numero que UID.
Apenas creamos la cuenta esta aun no se puede usar porque el comando useradd la crea en modo disable (deshabilitada) al no tener contraseña aun.
Asignar contraseña de cuenta de usuario
Ejecutaremos el siguiente comando para una cuenta acabada de crear o ya existente que quisiéramos cambiarle la contraseña.
sudo passwd pepe
[sudo] password for drivemeca:
Cambiando la contraseña del usuario pepe.
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: todos los tokens de autenticación se actualizaron exitosamente.
Primero se nos pedirá la contraseña de nuestra cuenta actual y después la que queremos colocar en la cuenta (pepe en este caso).
Si en este momento volvemos a mirar el archivo /etc/shadow, este ya contendrá la contraseña cifrada.
sudo cat /etc/shadow | grep pepe
pepe:$6$OEJ0uGxtVWrHw3Nz$YlYCEGGntEoMFYBdlZzijiUgydi8YN0yeQDxGnj5vcZ1uk.LEhUTIQzqe7M6Y5rA4rkKMrlKy/9393DQNlyyJ.:17946:0:99999:7:::
Crear cuenta de usuario en otro directorio base
En algún momento llegaremos a necesitar crear el directorio personal de una cuenta o servicio en otro sitio.
Para esto tenemos dos posibles formas.
Usando el parámetro -b asignamos otro directorio base, en este caso /opt
sudo useradd -b /opt juan
Si miramos el contenido de la carpeta /opt veremos la carpeta juan.
ls -la /opt/
total 16
drwxr-xr-x. 4 root root 4096 feb 19 17:58 .
dr-xr-xr-x. 18 root root 4096 feb 14 08:25 ..
drwxr-xr-x. 3 root root 4096 feb 1 16:02 google
drwx------. 3 juan juan 4096 feb 19 17:58 juan
La otra forma de hacer esto seria con el parámetro -d de useradd.
Con la diferencia que debemos darle todo el camino (path) al parámetro.
sudo useradd -d /opt/juan juan
Veamos la cuenta juan como fue creada en /etc/passwd.
cat /etc/passwd | grep juan
juan:x:1002:1002::/opt/juan:/bin/bash
Cuenta de usuario con UID y GID diferentes
Aunque ya hoy en día no es común, una buena practica era crear las cuentas de usuario perteneciendo al grupo 100 (users).
Usaremos el parámetro -g con el nombre del grupo o su numero.
sudo useradd -g users pepe
Si al contrario, quisiéramos crear la cuenta con un numero de usuario UID especifico usaríamos el parámetro -u de la siguiente forma.
sudo useradd -u 1050 pepe
Incluir cuenta de usuario en varios grupos
Si quisiéramos que la cuenta que estamos por crear usara varios grupos, el comando seria el siguiente.
Utilizaremos el parámetro -G y escribiríamos los grupos separados por comas uno detrás del otro (no importa el orden)
sudo useradd -G adm,lp,cdrom pepito
Veamos como quedo la cuenta pepito.
id pepito
uid=1003(pepito) gid=1003(pepito) grupos=1003(pepito),4(adm),7(lp),11(cdrom)
cat /etc/group | grep pepito
adm:x:4:pepito
lp:x:7:pepito
cdrom:x:11:pepito
pepito:x:1003:
Cuenta de usuario sin carpeta personal
Por seguridad a veces necesitaremos crear una cuenta sin que el comando intente crear el home o carpeta personal.
Esto puede ser porque ya el directorio existe.
Para esta tarea usaremos el parámetro -M al momento de crear la cuenta de usuario o servicio.
sudo useradd -M serviciosupersecreto
Y si miramos la cuenta.
cat /etc/passwd | grep servicio
serviciosupersecreto:x:1004:1004::/home/serviciosupersecreto:/bin/bash
Nos aparece configurada la ruta (path) al home pero en el /home no esta creada.
ls -la /home/servicio*
ls: no se puede acceder a '/home/servicio*': No such file or directory
Crear cuenta con fecha de caducidad con comando useradd linux
Necesitas crear una cuenta que caduque en una fecha especifica?
Para eso crearemos la cuenta con el parámetro -e de useradd linux.
La fecha debe ser escrita en el formato AAAA-MM-DD.
sudo useradd -e 2019-03-15 juanito
Con el anterior comando useradd creamos la cuenta juanito con vigencia hasta el 15 de marzo del 2019.
sudo chage -l juanito
Último cambio de contraseña :feb 20, 2019
La contraseña caduca : nunca
Contraseña inactiva : nunca
La cuenta caduca : mar 15, 2019
Número de días mínimo entre cambio de contraseña : 0
Número de días máximo entre cambio de contraseña : 99999
Número de días de aviso antes de que caduque la contraseña : 7
Como crear una cuenta con contraseña que expire
Esta es una gran medida de seguridad que asegura las cuentas de usuario forzándolas a cambiar la contraseña.
Usaremos el parámetro -f con la cantidad de días para quedar deshabilitada la cuenta si no se cambia la contraseña.
sudo useradd -f 10 joselito
Nota: 0 deshabilita la cuenta apenas vence la contraseña y -1 configura la cuenta para que nunca se deshabilite.
Activar que una cuenta a crear caduque
Al contrario del anterior parámetro, es posible deshabilitar una cuenta.
Para esto usaremos el parámetro -e y la fecha en formato AAAA-MM-DD
sudo useradd -e
Cuenta de usuario con comentario
El campo de nombre o comentario también conocido como GECOS en caso de usarlo nos sirve para conocer quien usara la cuenta.
sudo useradd -c "Cuenta ULTRA secreta" piolin
Si miramos la cuenta en /etc/passwd esto es lo que veremos.
cat /etc/passwd | grep piolin
piolin:x:1007:1007:Cuenta ULTRA secreta:/home/piolin:/bin/bash
También lo explico en este vídeo:
Activando diferente shell en una cuenta a crear
El shell o interprete también se puede cambiar al crear una cuenta con useradd.
Esto podría ser útil, por ejemplo, para crear una cuenta que no se pueda conectar.
Utilizaremos el parámetro -s para activar el shell a utilizar por la cuenta.
sudo useradd -s /sbin/nologin piolin
Si ahora miramos la cuenta piolin veremos lo siguiente.
cat /etc/passwd | grep piolin
piolin:x:1007:1007:Cuenta ULTRA secreta:/home/piolin:/sbin/nologin
Con lo cual la cuenta no se podría logear (conectar).
Vale aclarar que todos los anteriores ejemplos se pueden combinar según tus necesidades.
Satisfech@ con el articulo, hazme una donación, no importa la cantidad, la intención es lo que vale, dale click a este botón
Comparte este articulo opensource en tus redes sociales (compartir es sexy) por medio de los botones de redes sociales para que otros lo conozcan y apoyes mi blog.
Ademas, no olvides escribirme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.
Blogger por ratos, motociclista apasionado, evangelizador opensource, youtuber y gamer para acabar con el stress.
Olvidaba también que me encanta el helado, ir al cine y el café !!