指定日の代わりに日数でパスワードの有効期限をリセットする

指定日の代わりに日数でパスワードの有効期限をリセットする

passwdまたはchageコマンドを使用してコマンドが実行されてから90日後にパスワードが期限切れになるようにする方法はありますか?

次のように日付別にできることがわかります。

chage -E "2014-07-31" userid

しかし、特定の日付ではなく数字でこれを行う方法を探しています。

ありがとうございます!

ベストアンサー1

chageデフォルトでは日付差を処理しませんが、シェルにそれを処理させ、chageYYYY-MM-DD日付表現の代わりに1970-01-01以降の日数を指定できます。

chage -E $(( $(date +%s)/3600/24 + 90 )) userid

(90を任意の日数に変更してください。)


有効期間の変更パスワード代わりにアカウント少しトリッキーです。実際、パスワードの実際の有効期限は設定できず、最大期間(使用chage -M)のみ設定できます。

これから90日後にパスワードの有効期限が切れるのに必要な最大寿命を計算するには、いくつかの手順をスキップする必要があります。

userid=johndoe
pwd_age=$(grep "^$userid:" /etc/shadow | cut -d: -f 3)
now=$(( $(date +%s) / 3600 / 24 ))
age_at_expiry_date=$(( $now + 90 - $pwd_age ))
chage $userid -M $age_at_expiry_date

多少複雑でも大丈夫なら、1行にまとめることもできます。

userid=johndoe chage $userid -M $(( $(date +%s) / 3600 / 24 + 90 - $(grep "^$userid:" /etc/shadow | cut -d: -f 3) ))

パスワードが最後に変更された日付を上書きしたい場合は、次の手順を実行します。

chage -M 90 -d $(date +%F) userid

おすすめ記事