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;
  • password: this is a password encrypted by a one-way function (crypt), relying on DES, MD5, SHA-256 or SHA-512. The special value “x” indicates that the encrypted password is stored in /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.
As mentioned before, one can edit this file directly. But there are more elegant ways to apply changes, which are described in 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.
One can expire passwords using this file or set the time until the account is disabled after the password has expired.

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

The following commands allow modification of the information stored in specific fields of the user databases: passwd permits a regular user to change their password, which in turn, updates the /etc/shadow file (chpasswd allows administrators to update passwords for a list of users in batch mode); chfn (CHange Full Name), reserved for the super-user (root), modifies the GECOS field. chsh (CHange SHell) allows the user to change their login shell; however, available choices will be limited to those listed in /etc/shells; the administrator, on the other hand, is not bound by this restriction and can set the shell to any program of their choosing.
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.
Besides these tools the usermod command allows to modify all the details mentioned above.

8.4.4. Desactivación de una cuenta

You may find yourself needing to “disable an account” (lock out a user), as a disciplinary measure, for the purposes of an investigation, or simply in the event of a prolonged or definitive absence of a user. A disabled account means the user cannot login or gain access to the machine. The account remains intact on the machine and no files or data are deleted; it is simply inaccessible. This is accomplished by using the command passwd -l user (lock). Re-enabling the account is done in similar fashion, with the -u option (unlock). This, however, only prevents password-based logins by the user. The user might still be able to access the system using an SSH key (if configured). To prevent even this possibility you have to expire the account as well using either chage -E 1user or usermod -e 1 user (giving a value of -1 in either of these commands will reset the expiration date to never). To (temporarily) disable all user accounts just create the file /etc/nologin.
You can disable a user account not only by locking it as described above, but also by changing its default login shell (chsh -s shell user). With the latter changed to /usr/sbin/nologin, a user gets a polite message informing that a login is not possible, while /bin/false just exits while returning false. There is no switch to restore the previous shell. You have to get and keep that information before you change the setting. These shells are often used for system users which do not require any login availability.

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.