回答:
の--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
これを行うには、実際には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
ユーザーを数分間だけアクティブにしたい場合は、日付を指定する必要があるため、上記のオプションは使用できません。その場合、crontab
指定された時間(たとえば、10分)後に作成されたユーザーを削除/ロックするようにセットアップするか、次のいずれかを実行できます。
adduser someuser && sleep 600 && usermod --lock someuser
または
$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes
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
別の方法(OSがアカウントの有効期限をサポートしていない場合、またはこの機能が何らかの理由で機能しない場合):このアカウントをロックする30日後に実行するcronジョブを設定します。
通常、アカウントは、暗号化されたパスワードを無効な値に設定することによりロックされます。FreeBSDでは、pw lock X
コマンドはアカウントをロックしますX
。