GNU/Linux >> Tutoriales Linux >  >> Linux

Introducción al comando useradd de Linux

Agregar un usuario es uno de los ejercicios más fundamentales en cualquier sistema informático; este artículo se centra en cómo hacerlo en un sistema Linux.

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Antes de comenzar, quiero mencionar tres fundamentos a tener en cuenta. Primero, como con la mayoría de los sistemas operativos, los usuarios de Linux necesitan una cuenta para poder iniciar sesión. Este artículo cubre específicamente las cuentas locales, no las cuentas de red como LDAP. En segundo lugar, las cuentas tienen un nombre (llamado nombre de usuario) y un número (llamado ID de usuario). En tercer lugar, los usuarios normalmente se colocan en un grupo. Los grupos también tienen un nombre y una identificación de grupo.

Como era de esperar, Linux incluye una utilidad de línea de comandos para agregar usuarios; se llama useradd . También puede encontrar el comando adduser . Muchas distribuciones han agregado este enlace simbólico al useradd mando como una cuestión de conveniencia.

$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd

Echemos un vistazo a useradd .

Nota:Los valores predeterminados descritos en este artículo reflejan los de Red Hat Enterprise Linux 8.0. Puede encontrar diferencias sutiles en estos archivos y ciertos valores predeterminados en otras distribuciones de Linux u otros sistemas operativos Unix como FreeBSD o Solaris.

Comportamiento predeterminado

El uso básico de useradd es bastante simple:se puede agregar un usuario simplemente proporcionando su nombre de usuario.

$ sudo useradd sonny

En este ejemplo, el useradd comando crea una cuenta llamada sonny . También se crea un grupo con el mismo nombre y sonny se coloca en él para ser utilizado como el grupo principal. Hay otros parámetros, como el idioma y el shell, que se aplican de acuerdo con los valores predeterminados y establecidos en los archivos de configuración /etc/default/useradd y /etc/login.defs . Por lo general, esto es suficiente para un solo sistema personal o un entorno empresarial pequeño de un servidor.

Mientras que los dos archivos anteriores gobiernan el comportamiento de useradd , la información del usuario se almacena en otros archivos que se encuentran en /etc directorio, al que me referiré a lo largo de este artículo.

Comportamiento personalizable

La línea de comando permite la personalización para momentos en los que un administrador necesita un control más preciso, como especificar el número de identificación de un usuario.

Números de ID de usuario y grupo

De forma predeterminada, useradd intenta utilizar el mismo número para el ID de usuario (UID) y el ID de grupo principal (GID), pero no hay garantías. Aunque no es necesario que el UID y el GID coincidan, es más fácil para los administradores administrarlos cuando lo hacen.

Sólo tengo el escenario para explicar. Supongamos que agrego otra cuenta, esta vez para Timmy. Comparando a los dos usuarios, sonny y timmy , muestra que tanto los usuarios como sus respectivos grupos principales se crearon utilizando el getent comando.

$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash

$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:

Lamentablemente, ni el UID de los usuarios ni el GID principal coinciden. Esto se debe a que el comportamiento predeterminado es asignar el siguiente UID disponible al usuario y luego intentar asignar el mismo número al grupo principal. Sin embargo, si ese número ya está en uso, se asigna al grupo el siguiente GID disponible. Para explicar lo que sucedió, planteo la hipótesis de que ya existe un grupo con GID 1001 e ingrese un comando para confirmar.

$ getent group 1001
book:x:1001:alan

El libro del grupo con el DNI 1001 ha causado que los GID estén apagados por uno. Este es un ejemplo en el que un administrador del sistema necesitaría tomar más control del proceso de creación de usuarios. Para resolver este problema, primero debo determinar el siguiente ID de usuario y grupo disponible que coincidirá. Los comandos grupo getent y obtener contraseña será útil para determinar el próximo número disponible. Este número se puede pasar con -u argumento.

$ sudo useradd -u 1004 bobby

$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:

Otra buena razón para especificar la ID es para los usuarios que accederán a los archivos en un sistema remoto mediante el Sistema de archivos de red (NFS). NFS es más fácil de administrar cuando todos los sistemas de cliente y servidor tienen la misma ID configurada para un usuario determinado. Cubro esto con un poco más de detalle en mi artículo sobre el uso de autofs para montar recursos compartidos NFS.

Más personalización

Sin embargo, muy a menudo, es necesario especificar otros parámetros de cuenta para un usuario. Estos son breves ejemplos de las personalizaciones más comunes que puede necesitar usar.

Comentario

La opción de comentario es un campo de texto sin formato para proporcionar una breve descripción u otra información usando -c argumento.

$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash

Grupos

A un usuario se le puede asignar un grupo principal y varios grupos secundarios. La -g El argumento especifica el nombre o GID del grupo primario. Si no se especifica, useradd crea un grupo principal con el mismo nombre del usuario (como se demostró anteriormente). El -G El argumento (en mayúsculas) se usa para pasar una lista de grupos separados por comas en los que se colocará al usuario; estos se conocen como grupos secundarios.

$ sudo useradd -G tgroup,fgroup,libvirt milly 
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)

Directorio de inicio

El comportamiento predeterminado de useradd es crear el directorio de inicio del usuario en /home . Sin embargo, se pueden anular diferentes aspectos del directorio de inicio con los siguientes argumentos. La -b establece otro directorio donde se pueden colocar las casas de los usuarios. Por ejemplo, /casa2 en lugar del predeterminado /home .

$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash

La -d le permite especificar un directorio de inicio con un nombre diferente al del usuario.

$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash

El directorio esqueleto

El -k indica al nuevo directorio de inicio del nuevo usuario que se complete con cualquier archivo en /etc/skel directorio. Suelen ser archivos de configuración de shell, pero pueden ser cualquier cosa que un administrador del sistema desee poner a disposición de todos los usuarios nuevos.

Concha

La -s El argumento se puede utilizar para especificar el shell. Se utiliza el valor predeterminado si no se especifica nada más. Por ejemplo, a continuación, shell bash está definido en el archivo de configuración predeterminado, pero Wally ha solicitado zsh .

$ grep SHELL /etc/default/useradd 
SHELL=/bin/bash

$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh

Seguridad

La seguridad es una parte esencial de la gestión de usuarios, por lo que hay varias opciones disponibles con useradd dominio. A una cuenta de usuario se le puede dar una fecha de caducidad, en el formato AAAA-MM-DD, usando -e argumento.

$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:

Una cuenta también se puede deshabilitar automáticamente si la contraseña caduca. La -f El argumento establecerá el número de días después de que caduque la contraseña antes de que se deshabilite la cuenta. El cero es inmediato.

$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::

Un ejemplo del mundo real

En la práctica, varios de estos argumentos pueden utilizarse al crear una nueva cuenta de usuario. Por ejemplo, si necesito crear una cuenta para Perry, podría usar el siguiente comando:

$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry

Consulte las secciones anteriores para comprender cada opción. Verifique los resultados con:

$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)

Algunos consejos finales

añadir usuario El comando es "imprescindible" para cualquier administrador de Unix (no solo Linux). Es importante comprender todas sus opciones, ya que la creación de usuarios es algo que desea hacer bien la primera vez. Esto significa tener una convención de nomenclatura bien pensada que incluya un rango de UID/GID dedicado reservado para sus usuarios en toda su empresa, no solo en un solo sistema, especialmente cuando trabaja en una organización en crecimiento.


Linux
  1. Domina el comando ls de Linux

  2. El comando de localización en Linux

  3. Ejemplos de comandos useradd en Linux

  4. Ejemplos de comandos groupmems en Linux

  5. Deshacer el comando de basura de Linux

El comando del temporizador en Linux

El comando curl de Linux

Ejemplos esenciales del comando ps en Linux

¿Qué es el comando matar en Linux?

Entendiendo el comando time en Linux

Uso del comando grep en Linux

    Archivo Descripción Campos (en negrita, establecidos por useradd)
    contraseña Almacena los detalles de la cuenta de usuario nombre de usuario :no usado:uid :gid :comentario :dirección de inicio :cáscara
    sombra Almacena los detalles de seguridad de la cuenta de usuario nombre de usuario :contraseña:último cambio:mínimo:máximo:advertencia:inactivo :caducar :sin usar
    grupo Almacena los detalles del grupo nombre de grupo :no usado:gid :miembros