一定期間が経過すると自動的に期限切れになるLinuxユーザーを作成する方法

一定期間が経過すると自動的に期限切れになるLinuxユーザーを作成する方法

私は新しいLinuxユーザーアカウントを作成し、数時間後に自動的に期限切れになるPHPアプリケーションを作成しました。

Googleが「期間を変更した後に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国際日付形式(IDD)の日付が必要で、対応する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日付値(今日実行している場合(米国にいない限りタイムゾーンを含む遅延時間システムを使用しているため、日付が1日前になる))をbashスクリプトに渡します。

Bashコードの例:

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

関連情報