Wie kann ich automatisch ablaufende Benutzerkonten erstellen?

20

Das möchte ich können:

Nachdem ein Benutzerkonto erstellt wurde, sollte es möglich sein, einen sshTunnel zu erstellen. Das Konto wird jedoch nach 30 Tagen automatisch entfernt, es sei denn, der Countdown wird vom Root-Benutzer zurückgesetzt.

Wie kann ich das automatisieren? Ich werde ungefähr 15 Benutzer behandeln müssen.

Yusufmm
quelle

Antworten:

29

useradd

Mit der --expiredateOption to können Sie steuern, wie lange ein Benutzerkonto gültig ist useradd.

Auszug aus der useraddManpage

-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.

Wenn Sie also das Konto des Benutzers einrichten, können Sie ein Datum von +30 Tagen in der Zukunft angeben und dies zu Ihrem useraddBefehl hinzufügen, wenn Sie dessen Konten einrichten.

$ useradd -e 2013-07-30 someuser

chage

Sie können auch ein vorhandenes Kontodatum mit dem chageBefehl ändern . So ändern Sie das Ablaufdatum eines Kontos:

$ chage -E 2013-08-30 someuser

Berechnung des Datums in 30 Tagen

Dies zu tun ist mit dem dateBefehl eigentlich ziemlich trivial . Beispielsweise:

$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013

Sie können mit den +FORMATOptionen des dateBefehls formatieren, wodurch Sie Folgendes erhalten:

$ date -d "30 days" +"%Y-%m-%d"
2013-05-28

Alles zusammen

Wenn Sie die obigen Teile kennen, haben Sie hier eine Möglichkeit, sie zusammenzustellen. Wenn Sie ein Konto erstellen, führen Sie zunächst den folgenden Befehl aus:

$ useradd -e `date -d "30 days" +"%Y-%m-%d"` someuser

Wenn Sie dann das Ablaufdatum anpassen möchten, führen Sie regelmäßig den folgenden Befehl aus:

$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser

Angabe von Zeiträumen von weniger als 24h

Wenn ein Benutzer nur einige Minuten aktiv sein soll, können Sie die obigen Optionen nicht verwenden, da für sie ein Datum angegeben werden muss. In diesem Fall können Sie entweder a einrichten crontab, um den erstellten Benutzer nach der angegebenen Zeit (z. B. 10 Minuten) zu entfernen / zu sperren, oder Sie können eine der folgenden Aktionen ausführen:

adduser someuser && sleep 600 && usermod --lock someuser

oder

$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes

Verweise

slm
quelle
3
Ich habe mir erlaubt,% M (Minuten) in% m (Monat) zu ändern
Anthon
5

Wenn Sie unter Debian / Ubuntu arbeiten, sollten Sie adduserund verwenden usermod. Auf Debian-basierten Systemen useraddwird als niedrig eingestuft und (gemäß den Manpages):administrators should usually use adduser(8) instead

adduser Hat eine Option ohne Ablaufdatum, so dass Sie es nur zum Erstellen des Kontos verwenden.

usermodMit der Option -e/ können Sie --expiredatedas Ablaufdatum festlegen.

Sie berechnen den Parameter bis datemit: date -d "30 days" "+%Y-%m-%d"um:

usermod --expiredate $(date -d "30 days" "+%Y-%m-%d") username
Anthon
quelle
1

Eine andere Möglichkeit (wenn Ihr Betriebssystem das Ablaufen des Kontos nicht unterstützt oder diese Funktion aus irgendeinem Grund nicht funktioniert): Richten Sie einen Cron-Job ein, der in 30 Tagen ausgeführt wird und dieses Konto sperrt.

Normalerweise wird das Konto gesperrt, indem das verschlüsselte Kennwort auf einen ungültigen Wert gesetzt wird. Unter FreeBSD pw lock Xsperrt der Befehl das Konto X.

sendmoreinfo
quelle
1
Erläutern Sie, wie Sie ein Konto sperren können.
SLM
Das ist wirklich vom Betriebssystem abhängig.
sendmoreinfo
4
Es wäre immer noch hilfreich, wenn Sie ein Beispiel geben würden, das dies zeigt.
SLM