背景
実験的にアイテムを手動で作成して新しいユーザー(ルート)を追加しました
/etc/passwd
。openssl
具体的には私が使用したパスワードをハッシュしましたが、OpenSSL 1.1.1g
結果は他のバージョンでも同じでなければなりません。testing
私は文字列 ""をハッシュするたびに異なる結果を得ることがわかりました。
# openssl passwd testing YY9E0oGqqamCM # openssl passwd testing csL9dpD2Iy3H2
/etc/passwd
次に、次のように2つのハッシュをファイルに追加しました。
# echo "root2:YY9E0oGqqamCM:0:0:root:/root:/bin/bash" >> /etc/passwd # echo "root3:csL9dpD2Iy3H2:0:0:root:/root:/bin/bash" >> /etc/passwd
最後に、ハッシュは異なりましたが、各ユーザーに正常に切り替えました。
$ whoami reguser
$ su root2 Password: testing
# whoami root # exit
$ whoami reguser
$ su root3 Password: testing
# whoami root
質問
testing
ファイルの実際のハッシュが異なる場合でも、/etc/passwd
同じパスワードをどのように使用できますか?- 誰かが後ろで何が起こっているのかを説明できればいいでしょう。
- 「testing」という文字列がハッシュされるたびに異なるソルトが提供されるとします。しかし、ユーザーを切り替えるためにパスワードを入力すると、Linuxはそのソルトが何であるかをどうやって知ることができますか?
- 誰かが後ろで何が起こっているのかを説明できればいいでしょう。
答え1
パスワードハッシュは通常塩漬け。ソルトを指定しないと、ランダムに生成されます。だから結果は異なります。塩は出力の一部です。
openssl passwd -salt xx foo
xxY8K1xpBNqPg
openssl passwd -salt xx foo
xxY8K1xpBNqPg
答え2
ハッシュエントリの最初の2文字は塩です。
openssl passwd
もっとも少なくも、常に2文字の長さのソルトが必要です。YY9E0oGqqamCM
csL9dpD2Iy3H2
したがって、およびの場合はそれぞれ塩になりますYY
。cs
$ openssl passwd -salt YY testing YY9E0oGqqamCM $ openssl passwd -salt cs testing csL9dpD2Iy3H2