Product SiteDocumentation Site

8.4. Bases de datos de usuarios y grupos

Generalmente se almacena la lista de usuarios en el archivo /etc/passwd y el archivo /etc/shadow almacena las contraseñas con hash. Ambos son archivos de texto en un formato relativamente simple que pueden leerse y modificarse con un editor de texto. Se muestra cada usuario en una línea con varios campos separados por dos puntos («:»).

8.4.1. Lista de usuarios: /etc/passwd

Esta es una lista de los campos en el archivo /etc/passwd:
  • nombre de usuario, por ejemplo rhertzog;
  • contraseña: esta es una contraseña cifrada por una función unidireccional (crypt), que utiliza DES, MD5, SHA-256 o SHA-512. El valor especial «x» indica que la contraseña cifrada está almacenada en /etc/shadow;
  • uid: número único que identifica a cada usuario;
  • gid: número único del grupo principal del usuario (de forma predeterminada, Debian crea un grupo específico para cada usuario);
  • GECOS: campo de datos que generalmente contiene el nombre completo del usuario;
  • directorio de inicio de sesión, asignado al usuario para almacenar sus archivos personales (al que generalmente apunta la variable de entorno $HOME);
  • programa a ejecutar al iniciar sesión. Generalmente es un intérprete de órdenes (consola) que le da libertad al usuario. Si especifica /bin/false (que no hace nada y vuelve el control inmediatamente), el usuario no podrá iniciar sesión.
Como ya se ha dicho anteriormente, se puede editar este archivo directamente. Pero hay formas más elegantes de aplicar cambios, que se describen en Sección 8.4.3, “Modificación de una cuenta o contraseña existente”.

8.4.2. El archivo de contraseñas ocultas y cifradas: /etc/shadow

El archivo /etc/shadow contiene los siguientes campos:
  • nombre de usuario;
  • contraseña cifrada;
  • varios campos que administran el vencimiento de la contraseña.
Se pueden hacer caducar las contraseñas usando este archivo o establecer el tiempo hasta que la cuenta se deshabilite después de que la contraseña haya caducado.

8.4.3. Modificación de una cuenta o contraseña existente

Los siguientes programas permiten modificar la información almacenada en campos específicos de la base de datos de usuarios: passwd le permite a un usuario normal cambiar su contraseña que, a su vez, actualiza el archivo /etc/shadow(chpasswd permite a los administradores actualizar las contraseñas de una lista de usuarios en modo batch); chfn (cambiar el nombre completo: «CHange Full Name»), reservado para el superusuario (root), modifica el campo GECOS. chsh (cambiar consola: «CHange SHell») le permite a un usuario cambiar su consola de inicio de sesión; sin embargo las opciones disponibles estarán limitadas a aquellas mencionadas en /etc/shells; el administrador, por el otro lado, no está limitado por esta restricción y puede configurar la consola a cualquier programa de su elección.
Finalmente chage (cambiar edad: «CHange AGE») permite al administrador cambiar la configuración de expiración de la contraseña (la opción -l usuario mostrará la configuración actual). También puede forzar la expiración de una contraseña utilizando la orden passwd -e usuario, que obligará al usuario a cambiar su contraseña la próxima vez que inicie sesión.
Además de estas herramientas el comando usermod permite modificar todos los detalles ya mencionados.

8.4.4. Desactivación de una cuenta

Puede verse en la necesidad de “deshabilitar una cuenta” (bloquear a un usuario), como medida disciplinaria, a efectos de una investigación, o simplemente en caso de ausencia prolongada o definitiva de un usuario. Una cuenta deshabilitada significa que el usuario no puede iniciar sesión ni obtener acceso a la máquina. La cuenta permanece intacta en la máquina y no se eliminan archivos ni datos; simplemente no es accesible. Esto se logra utilizando el comando passwd -l usuario (bloquear). Rehabilitar la cuenta se hace de forma similar, con la opción -u (desbloquear). Esto, sin embargo, solo evita los inicios de sesión basados en contraseña por parte del usuario. Es posible que el usuario aún pueda acceder al sistema mediante una clave SSH (si está configurada). Para evitar incluso esta posibilidad hay que cerrar también la cuenta utilizando chage -E 1usuario o usermod -e 1 usuario(dando un valor de -1 en cualquiera de estos comandos se restablecerá la fecha de caducidad a nunca). Para deshabilitar (temporalmente) todas las cuentas de usuario sólo hay que crear el archivo /etc/nologin.
Puede desactivar una cuenta de usuario no sólo bloqueándola como ya se ha descrito, sino también cambiando su shell de inicio de sesión por defecto (chsh -s shell usuario). Cambiando el último por /usr/sbin/nologin, el usuario recibe un educado mensaje informandole de que no es posible iniciar sesión, mientras que /bin/false simplemente devolvuelve falso. No hay forma de restaurar el shell anterior. Tiene que obtener y conservar esa información antes de cambiar la configuración. Estos shells se utilizan a menudo para los usuarios del sistema que no requieren ninguna disponibilidad de inicio de sesión.

8.4.5. Lista de grupos: /etc/group

Se enumeran los grupos en el archivo /etc/group, una simple base de datos de texto en un formato similar al del archivo /etc/passwd con los siguientes campos:
  • nombre del grupo;
  • contraseña (opcional): sólo es utilizada para unirse a un grupo cuando no es un miembro normal (con newgrp o sg, revise el recuadro VOLVER A LOS CIMIENTOS Trabajar con varios grupos);
  • gid: número único de identificación del grupo;
  • lista de miembros: lista separados por comas de nombres de usuario que son miembros del grupo.
Los programas addgroup y delgroup agregan o eliminan un grupo respectivamente. groupmod modifica la información de un grupo (su identificador o gid). La orden gpasswd grupo cambia la contraseña del grupo mientras que gpasswd -r grupo elimina dicha contraseña.