CentOS 5
Sponsored Link

パスワードの最終更新日付を取得する2010/05/05

 
パスワードの最終更新日付を取得します。 特にどうとゆうことはない、「chage -l user」ですぐ出るのですが、 筆者が個人的に「パスワードの最終更新日付を出せないか」 と聞かれ、一発で一覧で出す方法を考えてみた結果のメモ書きです。
[1] パイプでだらだらとつなげば一応、一発で出ます。
[root@dlp ~]#
cut -d: -f1 /etc/passwd | while read line; do echo -n $line; chage -l $line | head -1 | awk -F: '{print $2}'; done

root Sep 12, 2009
bin Sep 12, 2009
daemon Sep 12, 2009
adm Sep 12, 2009
hiroyuki Sep 30, 2009
postfix Oct 17, 2009
[2] Linuxであれば上記でよいが、Solaris などで chage がなかったらどうしよう・・・となると、chage を使わず、 /etc/shadow から直接計算して出す方がよいかも・・・と思いたち、chage は使わないようにします。 ついでにパイプでつなぐのは長いので、シェルスクリプト化します。 さらについでに、パスワードなし等でログイン不可のアカウントは出力しないようにすることで 落ち着きました。
[root@dlp ~]#
vi lastchange.sh
#!/bin/sh

IFS=:
today=`expr \`date +%s\` / 60 / 60 / 24`
while read a b c d e f g h i; do
   if [ "$b" != '*' -a "$b" != '!!' ]; then
   last=`expr $today - $c`
   echo "$a = `date --date "-$last day" +%Y/%m/%d`"
   fi
done < /etc/shadow

[root@dlp ~]#
chmod 700 lastchange.sh

[root@dlp ~]#
./lastchange.sh

root = 2009/09/12
cent = 2009/09/14
hiroyuki = 2009/10/20
関連コンテンツ