私は現在、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
権限のないユーザーが自分のパスワードまたはアカウントの期限が切れるタイミングを決定するために使用できるこのオプションは除外されます。
追加資料:
- passwd - ユーザーパスワードの変更、表示オプション
-S
、-a
- Shadow - シャドウパスワードファイル、パスワードが最後に変更された日付
- パスワードの有効期限を取得する、表示されていますが
chage
パスワードプロンプトは省略されました...
答え2
これは宿題のように聞こえるので、次のようになります。
sort
必要に応じて、入力を数値で並べ替えるか、定義された複数の列に基づいて並べ替えることができます。cut
入力列のサブセットを印刷するために、列区切り文字を定義するために文字セットを使用できます。a | b
コマンドの出力をコマンドa
に送信しますb
。head
そして、tail
ファイルの最初の行と最後の行をそれぞれ返します。- ルート以外の場合(たとえば、を使用している場合
sudo
)、通常は他のユーザーに問い合わせることはできません。以下を使用すると、この問題(およびすべてのgrep
ping)を回避できます。passwd --status
現在のユーザー。 - 欲しいならユーザーが定期的にパスワードを変更していることを確認してください。Linuxディストリビューションには長年この機能があり、完全なソリューションがあると確信しています。