Users

如何創建自動過期的使用者帳戶?

  • February 2, 2014

這就是我希望能夠做到的:

創建使用者帳戶後,他們應該可以使用ssh-tunnel,但除非 root 使用者重置倒計時,否則他們的帳戶會在 30 天后自動刪除。

我怎樣才能自動化呢?我將不得不處理大約 15 個使用者。

使用者添加

--expiredate您可以通過使用選項來控制使用者帳戶的有效期useradd

摘自useradd手冊頁

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

因此,在設置使用者帳戶時,您可以指定從現在起 +30 天后的日期,並useradd在設置他們的帳戶時將其添加到您的命令中。

$ useradd -e 2013-07-30 someuser

改變

您還可以使用該chage命令更改現有帳戶日期。要更改帳戶到期日期,您需要執行以下操作:

$ chage -E 2013-08-30 someuser

從現在開始計算 +30 天后的日期

使用該date命令實際上非常簡單。例如:

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

+FORMAT您可以使用命令的選項進行格式化date,最終為您提供以下內容:

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

把它們放在一起

因此,了解了上述部分,這是將它們組合在一起的一種方法。首先,在創建帳戶時,您將執行以下命令:

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

然後,當您想調整它們的到期日期時,您會定期執行以下命令:

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

指定少於 24 小時的時間段

如果您希望使用者僅活動幾分鐘,則不能使用上述選項,因為它們需要指定日期。在這種情況下,您可以設置一個crontab在指定時間(例如,10 分鐘)後刪除/鎖定創建的使用者,或者您可以執行以下操作之一:

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

或者

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

參考

引用自:https://unix.stackexchange.com/questions/80968