web-dev-qa-db-ja.com

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

これが私ができることです:

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

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

20
Yusufmm

useradd

useradd--expiredateオプションを使用して、ユーザーのアカウントの有効期間を制御できます。

useradd manページからの抜粋

-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

dateコマンドの+FORMATオプションを使用してフォーマットすると、最終的に次のようになります。

$ 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

参考文献

31
slm

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

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

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

1
sendmoreinfo