3 votes

Comment supprimer automatiquement les utilisateurs Linux après une période déterminée ?

J'ai un script qui crée des utilisateurs de manière programmatique, mais nous aimerions supprimer les utilisateurs après 48 heures, ainsi que tous les fichiers qu'ils possèdent.

Je sais qu'il est possible de fixer une date d'expiration avec la commande useradd, mais je ne sais pas comment passer à l'étape suivante qui consiste à supprimer l'utilisateur et ses fichiers associés à la date d'expiration.

Existe-t-il un moyen simple de procéder ?

Merci de votre attention !

5voto

user9517 Points 113163

Si vous souhaitez que les comptes expirent deux jours après leur création, le script ci-dessous devrait vous aider.

#!/bin/bash
#
nowsecs=$( date +%s )

while read account
do
    username=$( echo $account | cut -d: -f1  )
    expiredays=$( echo $account | cut -d: -f2 )
    expiresecs=$(( $expiredays * 86400 ))
    if [ $expiresecs -le $nowsecs ]
    then
        echo "$username has expired deleting"
        userdel -r "$username"
    fi
done < <( cut -d: -f1,8 /etc/shadow | sed /:$/d )

Lorsqu'il est exécuté, il lit le fichier fantôme et sélectionne les comptes pour lesquels des dates d'expiration ont été définies. Pour chaque compte sélectionné, il détermine si la date actuelle est postérieure à la date d'expiration. Si c'est le cas, il supprime le compte.

Assurez-vous d'avoir des sauvegardes avant de tester cette méthode.

3voto

JeffG Points 1174

En supposant que vous ayez un script de création d'utilisateur qui définit $username, ajoutez ceci :

cat <<EOF | at now + 2 days
userdel -f -r $username
EOF

Il est également utile de fixer une date d'expiration pour le compte lorsqu'il est ajouté, à titre d'assurance supplémentaire.

1voto

user64756 Points 366

Une bonne idée serait probablement d'utiliser un mélange de crontab + fichier contenant les noms d'utilisateurs à supprimer ? Délimiter ce fichier avec les dates nécessaires peut-être, ou lancer une tâche cron qui recherche les utilisateurs expirés et les supprime. Un simple Shell Shell peut faire cela.

0voto

Matt Moran Points 107

Si vous les marquez déjà comme "expirés", vous pouvez essayer une tâche cron pour programmer des nettoyages de compte quotidiens, horaires ou hebdomadaires. Il suffit de créer un script comme celui que vous avez écrit pour créer l'utilisateur, mais qui détecte l'expiration et supprime tout ce dont vous avez besoin. Assurez-vous qu'il s'exécute en tant que root.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X