useradd Linux 馃懁 Uso de comando con ejemplos pr谩cticos

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?

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.

El comando useradd en Linux y posibles usos.

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
El comando useradd cuenta con parámetros

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:

Que es GECOS y para que sirve en Linux

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.