ユーザーの最後のパスワードを変更する[閉じる]

ユーザーの最後のパスワードを変更する[閉じる]

私は現在、UNIXシステムでユーザーの最後のパスワード変更を表示するコマンドを見つけようとしています。

passwd -Saコマンドを実行してみたところ、00/00/0000形式のパスワード変更日が表示されました。しかし、私はこのコマンドを最後に使用した日付だけをリストしたいと思います。 grepにコマンドをパイプしてみましたが、構文が正しくないようです。

このコマンドの結果の日付出力を探しています。

現在試行されているコマンド:

grep $USER | passwd -Sa

私のエラーを助けてくれてありがとう!

答え1

より多くの情報を提供していただければ、より良い回答を得ることができます。しかし、OpenSUSEで私が見たのは

passwd -S -a

次のように、各項目の履歴を提供します/etc/passwd

thomas PS 03/01/2013 0 99999 7 -1

したがって、awkでフィルタリングできます。

passwd -S -a | awk -v user=$USER '{ if ( $1 == user ) { printf  "%s\n",  $3; } }'

ただし、passwdコマンドはとして実行されると予想されるため、rootスクリプトは$USER変数を使用するよりもエレガントな操作を実行する必要があります(例:現在のユーザー)。その理由は、root公開されていない内容を読んでいるからです。/etc/shadow

使用できるchage、別のレポートが表示されますが、すばやく確認すると、ユーザーのパスワードを求めるメッセージが表示されます(おそらく望むものではないかもしれません)。

プログラムchageを使用するには、シャドウパスワードファイルが必要です。

このchageコマンドは次のように制限されます。-l 権限のないユーザーが自分のパスワードまたはアカウントの期限が切れるタイミングを決定するために使用できるこのオプションは除外されます。

追加資料:

答え2

これは宿題のように聞こえるので、次のようになります。

  • sort必要に応じて、入力を数値で並べ替えるか、定義された複数の列に基づいて並べ替えることができます。
  • cut入力列のサブセットを印刷するために、列区切り文字を定義するために文字セットを使用できます。
  • a | bコマンドの出力をコマンドaに送信しますb
  • headそして、tailファイルの最初の行と最後の行をそれぞれ返します。
  • ルート以外の場合(たとえば、を使用している場合sudo)、通常は他のユーザーに問い合わせることはできません。以下を使用すると、この問題(およびすべてのgrepping)を回避できます。passwd --status現在のユーザー。
  • 欲しいならユーザーが定期的にパスワードを変更していることを確認してください。Linuxディストリビューションには長年この機能があり、完全なソリューションがあると確信しています。

関連情報