3月 282011
 
シェアする

Linuxサーバ上で設定したユーザのパスワードを忘れた場合、割り出す方法は総当りしかない
それを考えるとroot権限で「passwd ユーザ名」を実行しユーザのパスワードを変更するのが簡単だ。

しかし、「今利用しているパスワードでログインできない」という場合の切り分けとして、

現在設定されているパスワードがいつ設定されたのか
手元のパスワードから変わっていないか

を確認しておくことも問題の切り分けになるだろう。
もしパスワードが変更されていないのにパスワードが通らない場合には、そのほかの問題を考慮する
必要がある。

まずは、

パスワードがいつ変更されたか

確認方法その1

「chage」コマンド用いて確認
# chage -l meatsource
Last password change                                    : Mar 28, 2011
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7
#

上記で、ユーザ「meatsource」のパスワードが2011年3月28日に変更されたことが分る。
この日付に変更した記憶が無いのであれば、残念。再設定の他ない。

もう一つの確認方法は、root権限でしか閲覧できない/etc/shadowファイルを参照する方法

/etc/shadowから「meatsource」を検索
# grep meatsource /etc/shadow
meatsource:$1$cNDLh5SC$NmkQbDRx9wSlAJAzGmKNU/:15061:0:99999:7:::
#

上記/etc/shadowの構造を説明しておきます。「:」を一区切りとして読みましょう。

meatsource
⇒ユーザID
$1$cNDLh5SC$NmkQbDRx9wSlAJAzGmKNU/
⇒MD5で暗号化されたパスワード:後ほど、パスワードがあっているかを確認する方法を説明します。
15061
⇒パスワード変更日(1970年1月1日からの日数)
0
⇒パスワードを変更できるまでの日数。「0」はいつでも変更可能
99999
⇒パスワードを変更しなくてもいい期間(日数)
7
⇒パスワード変更期限○日前に警告

この情報のうち「15061」を元に変更日時を特定します

「date」コマンドを用いて、1970年1月1日から15061日後を割り出す
# date -d "19700101 + 15061 days"
Mon Mar 28 00:00:00 JST 2011
#

さて、最後に

現在手元にあるパスワードと、/etc/shadowに登録されているパスワードが正しいかどうか

確認を行ないます。

MD5ハッシュ関数の一つで、「与えられた文字列」から「ランダムな文字列」を作成します。
この「ランダムな文字列」からは、「与えられた文字列」を特定することが出来ないという性質があります。
これを、一方向関数と呼びます

さて、このMD5の性質上、/etc/shadowを見てもパスワードを特定できないことが分ると思います。

したがって、/etc/shadowから参照した暗号化されたパスワードの記述を元に、
「パスワードは○○か?」という検証を行います。

以下「/etc/shadow」から確認したパスワードの部分
$1$cNDLh5SC$NmkQbDRx9wSlAJAzGmKNU/

上記を元に、以下「perl」を用いて確認します。

パスワードが「5upaGetti」の場合
# perl -e 'print crypt("5upaGetti","\$1\$cNDLh5SC\$"),"\n"'
$1$cNDLh5SC$NmkQbDRx9wSlAJAzGmKNU/
#

上記のように、「perl ~」で始まるコマンドにパスワードを現在のパスワードを与え、得られる結果が
/etc/shadowの記述と同じ場合は、パスワードは手元のものと同じ事になる。

 

このエントリーをはてなブックマークに追加

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ