C'est ce que j'aimerais pouvoir faire:
Une fois le compte d'utilisateur créé, ils devraient pouvoir être capable de ssh
- tunnel, mais leur compte est automatiquement supprimé après 30 jours, à moins que le compte à rebours soit réinitialisé par l'utilisateur racine.
Comment puis-je l'automatiser? Je vais devoir gérer environ 15 utilisateurs.
Vous pouvez contrôler combien de temps le compte d'un utilisateur est valide via l'utilisation de la --expiredate
Option à useradd
.
Extraits de useradd
Page 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.
Donc, lors de la configuration du compte de l'utilisateur, vous pouvez spécifier une date de +30 jours à l'avenir, puis ajoutez-la à votre commande useradd
lors de la configuration de leurs comptes.
$ useradd -e 2013-07-30 someuser
Vous pouvez également modifier une date de comptes existante à l'aide de la commande chage
. Pour modifier la date d'expiration des comptes, vous procédez comme suit:
$ chage -E 2013-08-30 someuser
Pour ce faire, c'est en fait assez trivial à l'aide de la commande date
. Par exemple:
$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013
Vous pouvez formater en utilisant le +FORMAT
options sur la commande date
, qui finit par vous donner ce qui suit:
$ date -d "30 days" +"%Y-%m-%d"
2013-05-28
Alors connaître les pièces ci-dessus, voici une façon de le mettre ensemble. Tout d'abord, lors de la création d'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 périodiquement cette commande:
$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser
Si vous souhaitez qu'un utilisateur soit actif uniquement pendant quelques minutes, vous ne pouvez pas utiliser les options ci-dessus car elles nécessitent la spécification d'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), ou vous pouvez faire l'une des suivantes:
adduser someuser && sleep 600 && usermod --lock someuser
ou
$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes
Si vous êtes sur Debian/Ubuntu, vous devez utiliser adduser
et usermod
. Sur les systèmes basés sur Debian useradd
est considéré comme un niveau bas et (selon les pages de l'homme): administrators should usually use adduser(8) instead
adduser
a une option d'expiration sans expiration. Vous pouvez donc l'utiliser pour créer le compte.
usermod
a le -e
/--expiredate
Option pour définir la date d'expiration.
Vous calculez le paramètre sur date
avec: date -d "30 days" "+%Y-%m-%d"
obtenir:
usermod --expiredate $(date -d "30 days" "+%Y-%m-%d") username
Une autre façon (si votre système d'exploitation ne supporte pas l'expiration du compte ou cette fonctionnalité ne fonctionne pas pour une raison quelconque): Configurez un travail cron pour exécuter 30 jours à partir de maintenant qui verront ce compte.
Habituellement, le compte est verrouillé en définissant son mot de passe crypté à une valeur non valide; sur FreeBSD, pw lock X
La commande verrouille le compte X
.