web-dev-qa-db-fra.com

Comment créer des comptes d'utilisateur expirer automatiquement?

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.

20
Yusufmm

useraddd

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

chêne

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

calculer la date de +30 jours à partir de maintenant

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

Mettre tous ensemble

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

Spécification de périodes de moins de 24h

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

Les références

31
slm

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
6
Anthon

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.

1
sendmoreinfo