useradd
Puede controlar cuánto tiempo es válida la cuenta de un usuario mediante el uso de la --expiredate
opción useradd
.
extracto de la useradd
página man
-e, --expiredate EXPIRE_DATE
The date on which the user account will be disabled. The date is
specified in the format YYYY-MM-DD.
If not specified, useradd will use the default expiry date specified
by the EXPIRE variable in /etc/default/useradd, or an empty string
(no expiry) by default.
Entonces, al configurar la cuenta del usuario, puede especificar una fecha +30 días en el futuro a partir de ahora, y agregarla a su useradd
comando al configurar sus cuentas.
$ useradd -e 2013-07-30 someuser
chage
También puede cambiar la fecha de una cuenta existente con el chage
comando. Para cambiar la fecha de vencimiento de una cuenta, debe hacer lo siguiente:
$ chage -E 2013-08-30 someuser
calcular la fecha +30 días a partir de ahora
Hacer esto es bastante trivial usando el date
comando. Por ejemplo:
$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013
Puede formatear usando las +FORMAT
opciones del date
comando, que termina dándole lo siguiente:
$ date -d "30 days" +"%Y-%m-%d"
2013-05-28
Poniendolo todo junto
Entonces, conociendo las piezas anteriores, aquí hay una manera de armarlo. Primero, al crear una cuenta, ejecutarías este comando:
$ useradd -e `date -d "30 days" +"%Y-%m-%d"` someuser
Luego, cuando desee ajustar sus fechas de vencimiento, ejecute periódicamente este comando:
$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser
Especificando períodos de tiempo de menos de 24h
Si desea que un usuario solo esté activo durante algunos minutos, no puede usar las opciones anteriores, ya que requieren especificar una fecha. En ese caso, puede configurar a crontab
para eliminar / bloquear el usuario creado después del tiempo especificado (por ejemplo, 10 minutos), o puede hacer una de:
adduser someuser && sleep 600 && usermod --lock someuser
o
$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes
Referencias
Si está en Debian / Ubuntu, debe usar
adduser
yusermod
. En los sistemas basados en Debianuseradd
se considera de bajo nivel y (según las páginas del manual):administrators should usually use adduser(8) instead
adduser
no tiene una opción de vencimiento, por lo que solo debe usarla para crear la cuenta.usermod
tiene la opción-e
/--expiredate
para establecer la fecha de vencimiento.Calcula el parámetro
date
con:date -d "30 days" "+%Y-%m-%d"
para obtener:fuente
Otra forma (si su sistema operativo no admite el vencimiento de la cuenta o si esta característica no funciona por cualquier razón): configure un trabajo cron para que se ejecute dentro de 30 días y que bloqueará esta cuenta.
Por lo general, la cuenta se bloquea al establecer su contraseña cifrada en un valor no válido; en FreeBSD, el
pw lock X
comando bloqueará la cuentaX
.fuente