Jak mogę utworzyć automatycznie wygasające konta użytkowników?

20

Oto, co chciałbym móc zrobić:

Po utworzeniu konta użytkownika powinien on mieć możliwość sshtunelowania, ale jego konto zostanie automatycznie usunięte po 30 dniach, chyba że użytkownik root zresetuje odliczanie.

Jak mogę to zautomatyzować? Będę musiał obsłużyć około 15 użytkowników.

Yusufmm
źródło

Odpowiedzi:

29

useradd

Możesz kontrolować, jak długo konto użytkownika jest ważne, korzystając z --expiredateopcji do useradd.

fragment useraddstrony podręcznika 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.

Tak więc podczas konfigurowania konta użytkownika możesz określić datę +30 dni w przyszłości i dodać ją do swojego useraddpolecenia podczas konfigurowania ich kont.

$ useradd -e 2013-07-30 someuser

chage

Możesz także zmienić datę istniejącego konta za pomocą chagepolecenia. Aby zmienić datę wygaśnięcia konta, wykonaj następujące czynności:

$ chage -E 2013-08-30 someuser

obliczanie daty +30 dni od teraz

Wykonanie tego jest właściwie dość trywialne przy użyciu datepolecenia. Na przykład:

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

Możesz sformatować za pomocą +FORMATopcji datepolecenia, co w końcu daje następujące możliwości:

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

Kładąc wszystko razem

Znając powyższe elementy, oto jeden ze sposobów na złożenie ich w całość. Najpierw podczas tworzenia konta uruchom następujące polecenie:

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

Następnie, jeśli chcesz dostosować daty wygaśnięcia, okresowo uruchamiaj to polecenie:

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

Określanie okresów krótszych niż 24 godziny

Jeśli chcesz, aby użytkownik był aktywny tylko przez kilka minut, nie możesz użyć powyższych opcji, ponieważ wymagają one podania daty. W takim przypadku możesz skonfigurować opcję crontabusuwania / blokowania utworzonego użytkownika po określonym czasie (na przykład 10 minut) lub możesz wykonać jedną z następujących czynności:

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

lub

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

Bibliografia

slm
źródło
3
Zezwoliłem na zmianę% M (minut) na% m (miesiąc)
Anthon
5

Jeśli korzystasz z Debiana / Ubuntu, powinieneś użyć adduseri usermod. W systemach opartych na Debianie useraddjest uważany za niski poziom i (według stron podręcznika):administrators should usually use adduser(8) instead

adduser ma opcję bez wygaśnięcia, więc po prostu użyj jej do utworzenia konta.

usermodma opcję -e/ --expiredate, aby ustawić datę ważności.

Obliczasz parametr za datepomocą: date -d "30 days" "+%Y-%m-%d"aby uzyskać:

usermod --expiredate $(date -d "30 days" "+%Y-%m-%d") username
Anthon
źródło
1

Innym sposobem (jeśli Twój system operacyjny nie obsługuje wygaśnięcia konta lub ta funkcja nie działa z jakiegokolwiek powodu): skonfiguruj zadanie cron do uruchomienia za 30 dni, które zablokuje to konto.

Zwykle konto jest blokowane przez ustawienie jego zaszyfrowanego hasła na niepoprawną wartość; na FreeBSD pw lock Xpolecenie zablokuje konto X.

sendmoreinfo
źródło
1
Wyjaśnij, jak możesz zablokować konto.
slm
To zależy od systemu operacyjnego.
sendmoreinfo
4
Przydałby się przykład, który to pokazuje.
slm