自動的に期限切れになるユーザーアカウントを作成するにはどうすればよいですか?


20

これは私ができるようにしたいことです:

ユーザーのアカウントが作成されると、ユーザーはssh-tunnel できるようになりますが、カウントダウンがルートユーザーによってリセットされない限り、アカウントは30日後に自動的に削除されます。

これをどのように自動化できますか?約15人のユーザーを処理する必要があります。

回答:


29

useradd

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

すべてを一緒に入れて

それで、上記の部分を知っている、それをまとめる1つの方法はここにあります。最初にアカウントを作成するときに、次のコマンドを実行します。

$ 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

参照資料


3
私は%M(分)を%m(月)に変更する自由を取りました
-Anthon

5

Debian / Ubuntuを使用adduserしてusermodいる場合は、とを使用する必要があります。Debianベースのシステムでuseraddは、低レベルと見なされます(manページによると):administrators should usually use adduser(8) instead

adduser 有効期限なしのオプションがあるため、アカウントの作成に使用するだけです。

usermod有効期限を設定する-e/ --expiredateオプションがあります。

あなたはにパラメータを計算するdateと:date -d "30 days" "+%Y-%m-%d"取得するには:

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

1

別の方法(OSがアカウントの有効期限をサポートしていない場合、またはこの機能が何らかの理由で機能しない場合):このアカウントをロックする30日後に実行するcronジョブを設定します。

通常、アカウントは、暗号化されたパスワードを無効な値に設定することによりロックされます。FreeBSDでは、pw lock XコマンドはアカウントをロックしますX


1
アカウントをロックする方法を説明します。
slm

それは本当にOSに依存しています。
sendmoreinfo

4
あなたがそれを示す例を与えれば、それはまだ役に立つでしょう。
slm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.