如何建立在固定期限後自動過期的linux用戶

如何建立在固定期限後自動過期的linux用戶

我創建了一個 PHP 應用程序,可以建立新的 Linux 用戶帳戶,並在幾個時期後自動過期。

在 Google 上搜尋「如何在修復 periode 後自動刪除 linux 用戶」後,我找到了這個答案,https://unix.stackexchange.com/a/80971/224583

但我不知道如何製作,例如建立新帳戶並在10個月或5個月後過期等。

我的問題是,如何將月轉換為日,例如我給出 5 個月並轉換 5 個月的天數。或者除了我的問題之外還有其他解決方案嗎?

答案1

該實用程式中的過期選項useradd需要以格式指定日期YYYY-MM-DD

您可以使用命令-d的選項來計算該日期date。使用您的 5 個月場景範例:

$ date +"%Y-%m-%d"
2017-04-08
$ date -d "5 months" +"%Y-%m-%d"
2017-09-08

答案2

-e的開關需要useradd國際日期格式 ( ) 的日期YYYY-MM-DD,可以從其手冊頁中取得:

   -e, --expiredate EXPIRE_DATE
       The date on which the user account will be disabled. The date is
       specified in the format YYYY-MM-DD.
       [...]

您現在只需說明帳戶的到期日即可。您可以在 PHP 中進行此計算。您連結到的答案是使用標準命令列工具來完成的,因此不必使用高階語言。

以下是如何在 PHP 中執行此操作的範例程式碼:

$diffHour = 0;
$diffMinute = 0;
$diffSecond = 0;
$diffMonth = 10;
$diffDay = 0;
$diffYear = 0;

$hour = date("H") + $diffHour;
$minute = date("i") + $diffMinute;
$second = date("s") + $diffSecond;
$month = date("n") + $diffMonth;
$day = date("j") + $diffDay;
$year = date("Y") + $diffYear;

$time = mktime($hour, $minute, $second, $month, $day, $year);

$date = date("Y-m-d", $time);

只需填寫最頂部區塊中的變數即可。我填寫了您 10 個月的範例。你也可以回到過去。例如,如果您希望其在 7 個月減 4 天後到期,您可以設定$diffMonth = 7;$diffDay = -4;

然後,將日期值(2018-02-09今天運行時(除非您住在美國,則日期早一天,因為我們仍在使用帶有時區的延遲時間系統))傳遞給您的 bash 腳本。

範例 bash 程式碼:

useradd -e "2018-02-09" "rizal"

相關內容