Este artículo fue publicado originalmente en go2linux.org el 4 de octubre de 2008. El dominio ya no me pertenece, pero soy el autor original. Lo republico aquí en garron.me con correcciones y mejoras.

Introducción

chage (change age) gestiona la información de envejecimiento de contraseñas para las cuentas de usuario. Como administrador del sistema, puedes usarlo para imponer políticas de rotación de contraseñas, bloquear cuentas tras inactividad y obligar a los usuarios a cambiar su contraseña en el próximo inicio de sesión.

Ver la información actual de caducidad

sudo chage --list usuario

Ejemplo de salida:

Last password change                    : May 10, 2024
Password expires                        : never
Password inactive                       : never
Account expires                         : never
Minimum number of days between changes  : 0
Maximum number of days between changes  : 99999
Number of days of warning before expiry : 7

Establecer una antigüedad máxima de contraseña

Forzar un cambio de contraseña después de 30 días:

sudo chage -M 30 usuario

Tras el siguiente --list, la fecha de caducidad será 30 días desde el último cambio:

Password expires                        : Jun 09, 2024
Maximum number of days between changes  : 30

Cuando el usuario inicia sesión tras la expiración, el sistema le obliga a elegir una nueva contraseña de inmediato.

Forzar un cambio inmediato de contraseña

Establece la fecha del último cambio de contraseña al origen (día 0), lo que hace que la contraseña ya haya expirado:

sudo chage -d 0 usuario

La próxima vez que el usuario inicie sesión deberá cambiar su contraseña antes de poder continuar. Este es el método estándar para forzar el cambio en una cuenta nueva.

Un atajo equivalente con passwd:

sudo passwd -e usuario

Establecer un período de aviso

Avisar al usuario con antelación antes de que caduque su contraseña. Aquí, avisar 7 días antes:

sudo chage -W 7 usuario

Un período de aviso de al menos 3–7 días es buena práctica — da tiempo al usuario para elegir una contraseña segura en lugar de escribir lo primero que vea.

Establecer un mínimo de días entre cambios

Evitar que los usuarios cambien inmediatamente a su contraseña anterior:

sudo chage -m 5 usuario

Esto requiere al menos 5 días entre cambios de contraseña.

Establecer una fecha de expiración de cuenta

Bloquear una cuenta en una fecha específica (útil para cuentas temporales o de contratistas):

sudo chage -E 2024-12-31 usuario

Para eliminar la fecha de expiración:

sudo chage -E -1 usuario

Modo interactivo

Ejecutar chage sin flags abre un prompt interactivo que recorre todos los ajustes:

sudo chage usuario

Referencia rápida

| Flag | Significado | |---|---| | -l / --list | Muestra la información actual de envejecimiento | | -M días | Días máximos antes de que deba cambiar la contraseña | | -m días | Días mínimos entre cambios | | -W días | Días de aviso antes de la expiración | | -d fecha | Fecha del último cambio (0 = forzar cambio ahora) | | -E fecha | Fecha de expiración de la cuenta (AAAA-MM-DD, o -1 para eliminar) | | -I días | Días de inactividad tras la expiración antes de bloquear la cuenta |