GNU/Linux >> Tutoriales Linux >  >> Linux

Guía completa de administración de usuarios en Linux

Este tutorial se centra en la administración de usuarios en hosts Linux, la gestión de usuarios y grupos.

Como administrador del sistema, está manipulando usuarios y grupos todo el tiempo.

Es posible que deba crear una nueva cuenta de usuario para un nuevo miembro en su equipo, por ejemplo.

También se le puede pedir que cree cuentas específicas para bases de datos o para herramientas especiales que instale en su host.

Si su host crece, también puede verse tentado a crear grupos para tener una comprensión más clara de los derechos que asigna a los miembros de su sistema.

Como consecuencia, tener una comprensión perfecta de la administración de usuarios es una habilidad fundamental que deben dominar los administradores experimentados.

En el tutorial de hoy, analizaremos muy de cerca la administración de usuarios:cómo crear usuarios , eliminarlos pero también cómo configurar una política de contraseña clara en su sistema .

Vas a descubrir todos los comandos asociados con la administración de usuarios, así como los archivos específicos que necesitas mirar de cerca.

¿Listo?

Lo que aprenderás

Al leer este tutorial hasta el final, aprenderá sobre los siguientes temas.

  • ¿Qué cuentas de usuario están en Linux y en qué se diferencian entre sí;
  • ¿Qué son los grupos? en Linux y cuáles son los diferentes tipos de grupos;
  • Cómo crear , eliminar y modificar usuarios existentes en un host Linux;
  • ¿Qué son las contraseñas y sombra archivos en su sistema y qué información contienen;
  • Cómo puede configurar la caducidad de la contraseña con el comando cambiar;
  • Cómo puede otorgar a los usuarios derechos privilegiados a través de visudo y usermod;

Como de costumbre, ese es un programa bastante largo, así que sin más preámbulos, echemos un vistazo a qué cuentas de usuario hay en Linux.

Conceptos básicos de administración de usuarios en Linux

Si está ejecutando su sistema Linux, lo más probable es que se esté ejecutando como un sistema multiusuario .

Significa que varios usuarios pueden conectarse al mismo host para compartir recursos o realizar diferentes operaciones en el sistema.

Sin embargo, como ya habrás notado, no todas las cuentas de usuario son iguales.

Algunos pueden tener más permisos que otros. Por otro lado, algunos pueden estar más restringidos que otros, sin poder iniciar ni siquiera un simple proceso de shell.

Tipos de cuentas de usuario

En Linux, tendrá que lidiar con tres tipos diferentes de cuentas de usuario:

  • Cuenta raíz :que es por definición la cuenta de usuario más poderosa de su sistema. El usuario raíz puede realizar cualquier operación (como cambiar contraseñas, por ejemplo), puede eliminar cualquier proceso y navegar a cualquier directorio en el sistema de archivos.
  • Cuentas del sistema :las cuentas del sistema son cuentas utilizadas por procesos o programas en su host. Es posible que haya visto que se utilizan cuentas específicas para la administración del correo o para ejecutar un servidor Apache simple. Esas cuentas a menudo reciben permisos restringidos y se les impide acceder a un shell interactivo.

Se recomienda no modificar esas cuentas por ti mismo.

  • Cuentas de usuario :las cuentas de usuario son cuentas utilizadas por usuarios reales. Pueden ser miembros de su equipo o cuentas que usted creó para recuperar algunos archivos en el host. A diferencia de las cuentas del sistema, es muy recomendable modificar dichas cuentas para darles una configuración correcta.

La mayoría de las veces, esas cuentas reciben shells interactivos (como bash o sh) para ejecutar comandos en el sistema.

Nota :en algunos hosts, se puede recomendar bloquear la cuenta raíz para evitar problemas de seguridad.

Identificadores de cuentas de usuario

En Linux, las cuentas se identifican mediante un ID de usuario , también llamado UID .

Esto está muy cerca del concepto de PID para procesos, los UID se utilizan para identificar de forma única a los usuarios en un sistema.

Además, a menudo se utilizan para clasificar las cuentas de usuario en un sistema Linux.

Como ya comentamos, las cuentas de usuario se dividen en tres categorías. Como consecuencia, los UID también se asignan a los usuarios según la categoría a la que pertenecen.

Para ver la información relacionada con su ID, ejecute el siguiente comando

$ id

Como puede ver, mi UID personal es 1000.

Pero, ¿por qué no es cero o uno?

En Linux, los ID de usuario se asignan según la siguiente regla:

  • La cuenta raíz recibe el UID 0 , así como el GID 0 .
  • Cuentas del sistema , el creado por los programas que usa en su sistema, se les asigna un rango personalizado que puede ser de 1 a 500 o de 1 a 999. En los sistemas basados ​​en Debian, el rango para las cuentas del sistema es de 1 a 999.
  • Cuentas de usuario reciben UID superiores a 1000. Esto es lo que realmente vio en la imagen que se muestra arriba.

Personalizar identificadores de usuario

En casos especiales, puede verse tentado a personalizar la forma en que se asignan UID y GID en un sistema Linux.

A veces, los usuarios se definen localmente en el sistema, pero también pueden definirse en un sistema de administración de usuarios externo como LDAP, por ejemplo.

Como consecuencia, si LDAP mantiene el UID de 1000 a 9999, es posible que desee asignar al usuario local un UID superior a 10000 de forma predeterminada.

La personalización de los identificadores de usuario se realiza en un archivo llamado login.defs en su host (ubicado en etc )

Para echar un vistazo a los identificadores predeterminados proporcionados en su host, eche un vistazo al archivo login.defs y busque la siguiente sección.

$ nano /etc/login.defs

Grupos y tipos de grupos en Linux

De forma predeterminada, a los usuarios de su host se les asigna uno o varios grupos.

En Linux, los grupos se crean para que los usuarios compartan el mismo conjunto de permisos o las mismas restricciones en un host de Linux.

De forma predeterminada, cuando crea una cuenta de usuario, se crea un grupo con el mismo nombre. Como consecuencia, cada usuario pertenece al menos a un grupo.

Para ilustrarlo, ejecute el siguiente comando en su sistema

$ groups <user>

De forma predeterminada, los grupos se dividen en dos categorías en Linux:

  • Grupo principal :un usuario puede tener un (y solo uno) grupo principal a la vez. Un grupo principal es el grupo asignado cuando el usuario crea un archivo o un directorio en el sistema. Como consecuencia, puede tener la tentación de modificar un grupo principal de usuarios para modificar su grupo de creación de archivos predeterminado.
  • Grupos secundarios :los usuarios pueden pertenecer a muchos otros grupos. Si pertenecen a un equipo específico en su host, pertenecerán a este grupo (administradores, por ejemplo). Como segundo ejemplo, los usuarios privilegiados pueden pertenecer al grupo sudo (en Debian) o al grupo wheel (en distribuciones basadas en Red Hat)

Los grupos también reciben identificadores específicos para diferenciarlos en el sistema.

Se llaman GID y también se pueden modificar inspeccionando el archivo login.defs en su sistema de archivos.

Ahora que tiene una comprensión más clara de qué usuarios y grupos hay en Linux, veamos qué comandos puede ejecutar para agregar o eliminar usuarios en su sistema.

Comandos de administración de usuarios en Linux

En su sistema, puede optar por agregar, eliminar o modificar cuentas locales.

Advertencia :deberá tener privilegios sudo en su host para ejecutar esos comandos o conectarse como root.

Aquí hay una guía para sistemas basados ​​en Debian y otra para sistemas basados ​​en Red Hat.

Creación de cuentas locales de usuario

Para crear cuentas locales de usuario en Linux, debe usar el comando useradd .

$ useradd <user>

De forma predeterminada, a menos que modifique los archivos de configuración, el comando creará un directorio de inicio para su usuario, así como archivos preestablecidos como .bashrc, .profile y .bash_logout.

Sin embargo, el comando useradd expone muchas opciones diferentes para modificar la creación de cuentas de usuario:

  • -d :para el directorio de inicio. De forma predeterminada, las cuentas se crearán en /home, pero puede optar por tener una ruta diferente en su sistema de archivos;
  • -e :fecha de caducidad. Útil cuando está creando cuentas para consultores externos que se irán en una fecha específica;
  • -g :para GID, esta opción está configurada para tener un GID personalizado para el usuario al crear la cuenta;
  • -G :para grupos complementarios, esta opción está configurada para tener grupos secundarios asignados al usuario de forma predeterminada;
  • -M :para no-home, esta opción se usa para evitar que el sistema cree un directorio de inicio para el usuario;
  • -r :para crear una cuenta de sistema para el usuario;
  • -s :para shell, esta opción se utiliza para personalizar el shell asignado al usuario de forma predeterminada (/bin/bash, /bin/nologin, /bin/false, /bin/sh, etc.)
  • -u :para UID, similar a la opción -g, se utiliza para personalizar el UID predeterminado asignado al usuario.

Como ejemplo, puede crear una cuenta de usuario estándar en el sistema.

$ useradd john

A continuación, puede echar un vistazo al directorio de inicio para comprobar si se creó una entrada para el usuario.

Como puede ver, no se creó ningún directorio de inicio de forma predeterminada para el usuario.

Para solucionar este problema, especifiquemos la opción correcta e intentemos nuevamente.

$ useradd -m bob

Ahora que su usuario está creado, deberá asignarle una contraseña, de lo contrario no será accesible.

Cambiar la contraseña de un usuario en Linux

Para cambiar la contraseña de un usuario en Linux , debe usar la contraseña con privilegios elevados.

$ sudo passwd <user>

Si tomamos el ejemplo de la cuenta que creamos anteriormente, ejecutaríamos el siguiente comando.

$ sudo passwd bob

Ahora que la contraseña de usuario está configurada, puede conectarse rápidamente a la cuenta de usuario con el comando su.

$ su - <user>

Como puede ver, el caparazón que se le da al usuario por defecto es bastante especial.

No es un shell bash normal, de hecho, se le asignó un shell completamente diferente llamado dash shell (/bin/sh).

¿Por qué?

De forma predeterminada, useradd utiliza un conjunto predeterminado de opciones que son completamente personalizables en su host.

Cambiar los valores predeterminados de adición de usuario en Linux

Para verificar las diferentes opciones predeterminadas para el comando useradd, ejecute el siguiente comando

$ useradd -D

También puede encontrar el mismo contenido en /etc/default/useradd archivo en su sistema.

Como puede ver, el shell predeterminado está configurado en /bin/sh por defecto.

Esta es exactamente la razón por la que el nuevo usuario tenía este shell definido de forma predeterminada.

Para modificar los valores predeterminados, no debe directamente el archivo predeterminado en su sistema.

Si comete algún error en el proceso, correrá el riesgo de no poder ejecutar su comando useradd nuevamente.

Por ejemplo, para cambiar el shell predeterminado que se usa, debe ejecutar

$ useradd -Ds /bin/bash

Esqueleto de directorio de inicio de usuario

Si eligió crear un directorio de inicio para su usuario, es posible que haya notado que algunos archivos están disponibles en él de manera predeterminada.

¿De dónde vienen esos archivos?

Al crear un directorio de inicio, su sistema Linux copiará los archivos de un directorio llamado "skel ” en su sistema que se encuentra en /etc .

Si tuviera que echar un vistazo a los archivos ubicados en /etc/skel , tendría exactamente los mismos archivos que en un directorio de inicio predeterminado

$ ls -al /etc/skel

Como probablemente haya adivinado, agregar algunos archivos a este directorio skel agregará los archivos a los directorios de inicio predeterminados en su host. Puede ser particularmente útil cuando necesita agregar archivos README si tiene reglas personalizadas en su servidor.

Eliminar una cuenta de usuario local en Linux

Para eliminar una cuenta de usuario en su sistema, debe usar el siguiente comando

$ userdel <user>

Sin embargo, hay una regla importante que debe conocer sobre userdel.

El comando userdel no eliminará el directorio de inicio ni los archivos propiedad del usuario en el sistema de forma predeterminada.

Si todavía hay archivos o directorios en el sistema sin usuario, se marcarán con el UID y GID anterior del usuario.

Para eliminar un directorio de inicio con el usuario, debe usar la opción -r.

$ userdel -r <user>

Esto no eliminará los archivos ubicados fuera del directorio de inicio.

Para encontrar archivos ubicados fuera del directorio de inicio, debe ejecutar el siguiente comando.

$ find <path> -uid <uid> 

Buscando encontrar y ubicar archivos en Linux fácilmente, ¡lea la guía!

Modificar una cuenta de usuario existente en Linux

En algunos casos, es posible que desee modificar una cuenta de usuario existente en su sistema.

Para modificar un usuario , tienes que ejecutar el comando usermod

$ usermod <option> <user>

Con usermod, tienes muchas opciones diferentes:

  • -c :para comentario, este comando se usa para modificar un comentario asociado con un usuario en el archivo passwd;
  • -d :directorio de inicio, utilizado para modificar el directorio de inicio predeterminado para el usuario;
  • -g :se utiliza para modificar el grupo de usuarios principal;
  • -a :para agregar, esto se usa para asignar grupos secundarios a un usuario al agregarlo a la lista existente de grupos para el usuario
  • -G :se usa para asignar grupos secundarios a un usuario (por ejemplo, un sudo o un grupo de rueda);
  • -L :utilizado para bloquear la cuenta de usuario;
  • -T :utilizado para desbloquear una cuenta de usuario

Por ejemplo, si desea agregar un usuario al grupo sudo, debe ejecutar

$ sudo usermod -aG sudo <user>

Ahora que tiene una comprensión más clara de los comandos que puede ejecutar para agregar o eliminar usuarios, veamos algunos archivos importantes relacionados con la administración de usuarios.

Passwd y archivos shadow

En Linux, hay dos archivos principales relacionados con la administración de usuarios:el archivo /etc/passwd y el archivo /etc/shadow.

Comprender el archivo passwd

De forma predeterminada, el archivo passwd muestra una lista de todos los usuarios disponibles localmente en su sistema Linux.

Para tener este listado, ejecute el siguiente comando

$ cat /etc/passwd

Como puede ver, el archivo passwd es un archivo separado por dos puntos que tiene múltiples entradas, una para cada usuario disponible en su sistema.

De izquierda a derecha, las columnas muestran la siguiente información:

  • Nombre de usuario :el nombre de usuario real del usuario en el sistema;
  • Contraseña :tener una entrada "x" simplemente significa que la contraseña está disponible en el archivo shadow en un formato cifrado;
  • UID :la ID de usuario única que describimos anteriormente;
  • GID :el ID del grupo principal del usuario (que puede diferir si lo personaliza);
  • Comentario:un comentario descriptivo que puede ser útil para identificar al usuario, este campo también se denomina GECOS campo;
  • Directorio de inicio :si al usuario se le asignó un directorio de inicio o un campo personalizado, aquí es donde se almacena la información;
  • Shell predeterminado :el shell asignado al usuario al crearlo.

Si tuviera que crear un nuevo usuario con el comando useradd, se agregaría automáticamente una nueva entrada a este archivo.

Por otro lado, el archivo shadow contiene información más confidencial sobre su sistema.

Comprender el archivo shadow

Para tener una lista del archivo shadow, asegúrese de ejecutar el comando como usuario privilegiado

$ sudo cat /etc/shadow

De forma predeterminada, el archivo shadow muestra las siguientes columnas:

  • Nombre de usuario :el nombre de usuario real del usuario en el sistema;
  • Contraseña :aquí es donde se almacenará la contraseña cifrada. De forma predeterminada, puede encontrar información sobre el sistema de encriptación inspeccionando los primeros tres caracteres (en este caso, $6$ es una encriptación SHA-512);
  • Última vez que se cambió la contraseña :número de días desde el 1 de enero de 1970 hasta la última modificación de la contraseña. En este caso, 18146 días da el 7 de septiembre de 2019;
  • Número mínimo de días entre cambios de contraseña :es decir, el número de días antes de que un usuario pueda cambiar su contraseña;
  • Número máximo de días para una contraseña válida :el período máximo de validez de una contraseña en el sistema;
  • Periodo de advertencia :esta opción define el número de días antes de que caduque una contraseña para que el usuario reciba un mensaje de advertencia sobre su cuenta;
  • Período de inactividad :cuando su contraseña caduca, define el período antes de que se deshabilite la cuenta;
  • Fecha de caducidad :define el número de días desde el 1 de enero de 1980 antes de que se inhabilite la cuenta.

Nota :un "!" o un "*" en la contraseña significa que el inicio de sesión del usuario está deshabilitado en el sistema, ya que probablemente esté tratando con una cuenta del sistema.

Ahora que tiene una comprensión más clara de la contraseña y del archivo shadow, veamos cómo puede administrar la caducidad de la contraseña con comandos.

Gestionar la caducidad de la contraseña con cambio

En Linux, la forma de modificar todos los parámetros que hemos visto antes es usando el comando chage.

$ chage <options> <user>

Donde las opciones son las siguientes:

  • -d :para el último día, esta opción establece el número de días desde que se cambió la contraseña de la cuenta de usuario;
  • -E :por vencimiento :establece una fecha de un número (desde el 1 de enero de 1970) en el que ya no se podrá acceder a la cuenta de usuario;
  • -Yo :para inactivo, esta opción establece el número de días de inactividad antes de que la cuenta de usuario se deshabilite en el sistema;
  • -m :para días mínimos, establece el número de días antes de dos cambios de contraseña consecutivos. Si establece este valor en cero, significa que el usuario puede usar su contraseña en cualquier momento;
  • -M :para max días, esta opción establece la validez máxima de una contraseña en el sistema. Esta es una de las opciones que debe configurar cuidadosamente si establece una buena política de contraseñas en sus hosts. Además, si calcula el último cambio de contraseña con la opción de días máximos, encontrará el día en que el usuario debe cambiar su contraseña;
  • -W :para días de advertencia :establece el número de días antes de la caducidad de la contraseña en los que la cuenta de usuario recibirá una advertencia de caducidad de la contraseña.

Para tener una lista completa de las políticas de contraseñas activas para su cuenta, debe ejecutar el siguiente comando

$ chage -l <user>

Como puede ver aquí, recibo todas las entradas relativas a las opciones especificadas anteriormente.

En este caso, cambié mi contraseña el 12 de octubre de 2019 y nunca más me veré obligado a cambiar mi contraseña. Sin embargo, esas opciones se pueden cambiar fácilmente.

Forzar cambio de contraseña

Para establecer un cambio de contraseña inmediato para un usuario en el host, debe ejecutar el siguiente comando

$ chage -d 0 <user>

Como puede ver aquí, la contraseña de usuario deberá cambiarse en el próximo inicio de sesión.

Intente iniciar sesión como usuario para ver que se le solicita que cambie su contraseña.

$ su <user>

Al cambiar su contraseña, podrá acceder a su cuenta de usuario como antes.

Establecer fácilmente una fecha de caducidad de la cuenta

Como se describió anteriormente, es posible que pueda cambiar la fecha de vencimiento de la cuenta con la opción -E.

Sin embargo, puede ser difícil adivinar la fecha dentro de veinte, treinta u ochenta días.

Para establecer la fecha de caducidad de una cuenta dentro de cincuenta días , escribe el siguiente comando

$ date -d '+50days' +%F

A partir de ahí, puede configurar fácilmente la fecha de vencimiento de esta cuenta.

$ chage -E <date> <user>

Configurar la caducidad de la contraseña de un usuario

Para establecer una caducidad de contraseña para un usuario, debe modificar el número máximo de días hasta que tenga que cambiar su contraseña.

Para eso, tienes que usar la opción -M.

$ chage -M <days> <user>

Como consecuencia, la fecha de caducidad de la contraseña se establecerá al ejecutar el comando de cambio.

Bloquear y desbloquear una cuenta de usuario

En algunos días, la caducidad de la contraseña simplemente no es suficiente.

Por motivos de seguridad, es posible que desee hacer caducar (o bloquear) una cuenta de usuario por completo. Esto se puede usar para evitar que un usuario acceda a sus hosts cuando no debería poder hacerlo.

Para bloquear una cuenta de usuario, debe usar el comando usermod.

$ usermod -L <user>

Como consecuencia, el usuario no podrá conectarse a la cuenta de usuario.

Para desbloquearlo, puede usar el comando usermod con la opción -U.

Concesión de derechos privilegiados a los usuarios

En Linux, básicamente tiene dos formas de establecer derechos privilegiados, es decir, sudo, para las cuentas de usuario.

Puede usar el comando usermod para agregar usuarios al grupo sudo (basado en Debian) o al grupo de rueda (basado en Red Hat).

Para agregar rápidamente un usuario a sudoers, ejecute el siguiente comando

$ sudo usermod -aG sudo <user>

O en Red Hat

$ sudo usermod -aG wheel <user>

También puede modificar directamente el archivo sudoers con el comando visudo.

Ya explicamos esos pasos en los siguientes artículos:

  • Agregar un usuario a sudoers en Debian 10
  • Agregar un usuario a sudoers en RHEL 8/CentOS 8

Conclusión

En el tutorial de hoy, aprendiste más sobre los aspectos básicos de la administración de usuarios en Linux.

Aprendió que puede agregar, eliminar y modificar usuarios y también puede modificar la política de contraseñas para asegurarse de no dejar agujeros de seguridad en su sistema.

También ha visto que puede leer archivos específicos en el sistema de archivos para tener información completa sobre usuarios y grupos.

Si está buscando una lista de usuarios en Linux, puede leer la siguiente guía.

Además, si tiene curiosidad sobre la administración del sistema Linux, debe consultar todas las guías que ya publicamos en esta sección.


Linux
  1. ¿Qué es un usuario de Linux?

  2. Cómo crear varias cuentas de usuario en Linux

  3. Linux su comando

  4. Instalar Linux Mint 19 en VirtualBox:la guía completa

  5. Guía para principiantes de administración de usuarios y grupos en Linux

Encuentra cuentas de usuario con contraseña vacía en Linux

Guía completa para instalar OxygenOS en OnePlus One en Linux

Guía completa de administración de usuarios en Linux

Guía completa de registro de Linux

Una guía completa para instalar Tomcat en Linux

Comandos de directorio de Linux:una guía completa