Por defecto, cuando creamos un usuario y contraseña ésta son “para toda la vida” a no ser que un día decidamos cambiarla o que hagamos uso de la caducidad de contraseñas, es decir, que sean válidas durante un tiempo determinado y una vez transcurrido dejan de serlo y hay que modificarlas.

Uno de los comandos (no el único) que nos permiten hacer esto es chage, con el cual podremos definir y obligarnos u obligar a otros usuarios del sistema a cambiar su contraseña cada X tiempo.

Vamos a obtener información de un usuario cualquiera:

chage -l usuario
(Es una ele minúscula)

Último cambio de contraseña :dic 30, 2011
La contraseña caduca : nunca
Contraseña inactiva : nunca
La cuenta caduca : nunca
Número de días mínimo entre cambio de contraseña : 0
Número de días máximo entre cambio de contraseñas : 99999
Número de días de aviso antes de que expire la contraseña : 7


Aquí podemos ver cuando fue la última vez que cambió su contraseña, cuando caduca, cuando la contraseña quedará inactiva, cuando caducará la cuenta, días mínimos que han de transcurrir para poder modificarla, el número de días que la contraseña es válida y con cuantos días de antelación nos avisará antes de que llegue la fecha de caducidad.

Así es como se mostraría por defecto tal cual creamos la cuenta, nunca caducará a no ser que indiquemos lo contrario y será válida durante muchos, muchos días.

El comando chage -l usuario lo podemos ejecutar sin ser root para visualizar nuestro propio usuario, pero no para ver las opciones de otros usuarios, esto sólo lo podrá hacer el administrador, igual que añadir cambios.

Vamos a realizar algunos ajustes, por ejemplo que el password caduque a los 60 días, o lo que es lo mismo que la contraseña sea válida durante 60 días, lo haremos con la opción:

-M número de días usuario
chage -M 60 usuario
Para deshacer los cambios:
chage -M99999 usuario

Si queremos que el aviso de cambio de contraseña sea 3 días antes, en lugar de 7, que es como estaba definido por defecto:

-W número de días usuario
chage -W 3 usuario

Y si además no queremos que los usuarios estén modificando su clave cada día vamos a establecer un mínimo de días que han de transcurrir antes de poder cambiarla, pongamos 10 como ejemplo:

-m número de días usuario
chage -m 10 usuario

Observad la diferencia entre las mayúsculas y las minúsculas, en este caso M y m no son lo mismo.

Para deshacer los cambios:
chage -m 0 usuario

Podemos hacerlo todo en una sola línea:
chage -M 60 -W 3 -m 10 usuario

Y vemos como ha cambiado:
Último cambio de contraseña :dic 30, 2011
La contraseña caduca : feb 28, 2012
Contraseña inactiva : nunca
La cuenta caduca : nunca
Número de días mínimo entre cambio de contraseña : 10
Número de días máximo entre cambio de contraseñas : 60
Número de días de aviso antes de que expire la contraseña : 3

Otra opción que también podemos definir, es que una cuenta de usuario quede inactiva, si por ejemplo tenemos un usuario temporal, estableceremos la fecha en la cual su cuenta dejará de ser válida:

-E número de días usuario

o

-E YYYY-MM-DD usuario

Se puede especificar de dos maneras, por el número de días o la fecha exacta. Tenemos un usuario llamado Paco y su cuenta estará activa hasta el 30 de Marzo:
chage -E 2012-03-30 Paco

Para deshacer los cambios:
chage -E -1 Paco

Y por último nos quedan las contraseñas inactivas, si establecemos como días inactivos 5 desde que la contraseña caducó y el usuario no se loguea durante esos 5 días, y lo hace 10 días después la cuenta será bloqueada y será root quien tenga que desbloquearla, pero si llega la fecha de caducidad y nos logueamos dentro de esos 5 días sí podremos acceder pero deberemos cambiar la contraseña al momento. Si el valor es 0 la cuenta no caduca pero igualmente deberemos añadir un nuevo password. En resumen, el password hay que cambiarlo de todas maneras, la diferencia está en si la cuenta quedará inactiva o no.

-I 5 usuario
(es una i mayúscula)

chage -I 5 usuario

Para deshacer los cambios y volverlo a dejar tal cual estaba:
chage -I -1 usuario

Otra maneras aún más rápida de hacerlo en vez de ir definiendo las opciones es con:
chage usuario

Con esto el sistema nos va preguntando y sólo hemos de introducir los valores o presionar ENTER para que coja la configuración por defecto o los que ya estaban definidos:
Cambiando la información de la edad para pinkpanth
Introduzca el nuevo valor, o presione ENTER para el predeterminado

Duración mínima de la contraseña [0]:
Duración máxima de la contraseña [ 99999]:
Último cambio de contraseña (AAAA-MM-DD) [2011-12-30]:
Aviso de caducidad de la contraseña [7]:
Contraseña inactiva [-1]:
Fecha de caducidad de la cuenta (AAAA-MM-DD) [1969-12-31]
: