useradd
Vous pouvez contrôler la durée de validité du compte d'un utilisateur en utilisant l' --expiredate
option to useradd
.
extrait de la useradd
page de manuel
-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.
Ainsi, lors de la configuration du compte de l'utilisateur, vous pouvez spécifier une date +30 jours dans le futur à partir de maintenant, et l'ajouter à votre useradd
commande lors de la configuration de leurs comptes.
$ useradd -e 2013-07-30 someuser
chage
Vous pouvez également modifier la date d'un compte existant à l'aide de la chage
commande. Pour modifier la date d'expiration d'un compte, procédez comme suit:
$ chage -E 2013-08-30 someuser
calcul de la date dans +30 jours
Pour ce faire, il est en fait assez trivial d'utiliser la date
commande. Par exemple:
$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013
Vous pouvez formater en utilisant les +FORMAT
options de la date
commande, ce qui finit par vous donner les éléments suivants:
$ date -d "30 days" +"%Y-%m-%d"
2013-05-28
Mettre tous ensemble
Donc, connaissant les pièces ci-dessus, voici une façon de les assembler. Tout d'abord, lorsque vous créez un compte, vous exécutez cette commande:
$ useradd -e `date -d "30 days" +"%Y-%m-%d"` someuser
Ensuite, lorsque vous souhaitez ajuster leurs dates d'expiration, vous exécutez régulièrement cette commande:
$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser
Spécification de périodes inférieures à 24h
Si vous souhaitez qu'un utilisateur ne soit actif que pendant quelques minutes, vous ne pouvez pas utiliser les options ci-dessus car elles nécessitent de spécifier une date. Dans ce cas, vous pouvez soit configurer un crontab
pour supprimer / verrouiller l'utilisateur créé après l'heure spécifiée (par exemple, 10 minutes), soit effectuer l'une des actions suivantes:
adduser someuser && sleep 600 && usermod --lock someuser
ou
$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes
Les références
Si vous êtes sur Debian / Ubuntu, vous devez utiliser
adduser
etusermod
. Sur les systèmes basés sur Debianuseradd
est considéré comme de bas niveau et (selon les pages de manuel):administrators should usually use adduser(8) instead
adduser
n'a pas d'option d'expiration, il vous suffit donc de l'utiliser pour créer le compte.usermod
a l' option-e
/--expiredate
pour définir la date d'expiration.Vous calculez le paramètre à
date
avec:date -d "30 days" "+%Y-%m-%d"
pour obtenir:la source
Une autre façon (si votre système d'exploitation ne prend pas en charge l'expiration du compte ou si cette fonctionnalité ne fonctionne pas pour une raison quelconque): configurez une tâche cron pour qu'elle s'exécute dans 30 jours et verrouille ce compte.
Habituellement, le compte est verrouillé en définissant son mot de passe crypté sur une valeur non valide; sur FreeBSD, la
pw lock X
commande verrouille le compteX
.la source