web-dev-qa-db-ja.com

ユーザーの最後のパスワード変更

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

コマンドpasswd -Saを実行してみましたが、00/00/0000でフォーマットされたパスワード変更日が表示されます。ただし、そのコマンドの最後のユーザーの日付のみを一覧表示したいと思います。コマンドをgrepにパイプしてみましたが、構文が正しくないようです。

このコマンドの結果として出力される日付だけを探しています。

試行された現在のコマンド:

grep $USER | passwd -Sa

私のエラーに関するどんな助けでもありがたいです!

5
Mister123

より多くの情報を提供することは、より良い答えを得る。オフハンド、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_変数(currentuser)。 rootが必要な理由は、公開されていない_/etc/shadow_の内容を読み取っているからです。

別のレポートを表示する chage を使用することもできますが、簡単なチェックでは、ユーザーのパスワードの入力を求められます(これはおそらく望んでいるものではありません)。

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

chageコマンドは、rootユーザーに制限されていますが、_-l_オプション。権限のないユーザーが、パスワードまたはアカウントの有効期限が切れる時期を判断するために使用できます。

参考文献:

4
Thomas Dickey

これは宿題のように聞こえるので、

  • sortは入力を数値で並べ替えることができ、必要に応じて定義された複数の列で並べ替えることができます。
  • cutは、一連の文字を使用して列セパレーターを定義し、入力列のサブセットを印刷できます。
  • a | bは、コマンドaの出力をコマンドbに送信します。
  • headtailは、それぞれファイルの最初と最後の行を返します。
  • 通常、rootにならない限り(つまり、Sudoを使用して)他のユーザーについて問い合わせることはできません。 passwd --statusを使用してcurrentユーザーのステータスを取得するだけで、これ(およびgrepping)を回避できます。
  • あなたがしたい場合 ユーザーがパスワードを定期的に変更することを確認してください Linuxディストリビューションには長年この機能があったので、すでに完成したソリューションがあるはずです。
1
l0b0