人間だったら考えて

考えて考えて人間だったら考えて

/etc/shadowの暗号化されたパスワードを確認

CentOS7では/etc/shadowで各ユーザーのパスワードを管理しているとのことなので、どのように管理しているのかを確認してみます。

まず、CentOS7で新しくユーザー(test)を追加します。

useradd test

次に、追加したユーザーにパスワードを付与します、ここでは"himitu"としておきます。

passwd test

この状態で、/etc/shadowを確認してみます。

cat /etc/shadow | grep test
test:$6$U.yvs5yq$R4m.GKg/C/uY/BK2/Ymo2DUjNJzYLbwFPiRhMtCtXdsqLoe9mpV37W4czwbO6Npq7doe2iTsr579s3JnpJUh6/:17304:0:99999:7:::

1番目のフィールドにユーザー名、2番目のフィールドに暗号化されたパスワードが入っています。
暗号化されたパスワードの先頭に"$6$"という文字列がありますが、これはパスワードの暗号化の際に用いられたアルゴリズムを表しており、"6"はSHA-512を表しています。(cryptのマニュアルを参照)

pythonのcryptモジュールで同様にパスワードを暗号化してみます。SHA-512の暗号化の際にはsalt文字列を渡します。

python -c 'import crypt; print(crypt.crypt("himitu", salt="$6$U.yvs5yq"))'
$6$U.yvs5yq$R4m.GKg/C/uY/BK2/Ymo2DUjNJzYLbwFPiRhMtCtXdsqLoe9mpV37W4czwbO6Npq7doe2iTsr579s3JnpJUh6/

当たり前ですが、上の結果と一致していることがわかります。

これで、オレオレパスワード管理ができますね(・∀・)