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.
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 |
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.