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.
8.4.2. El archivo de contraseñas ocultas y cifradas: /etc/shadow
El archivo /etc/shadow
contiene los siguientes campos:
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:
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.