背景

背景

背景

  • 実験的にアイテムを手動で作成して新しいユーザー(ルート)を追加しました/etc/passwdopenssl具体的には私が使用したパスワードをハッシュしましたが、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文字の長さのソルトが必要です。

  • YY9E0oGqqamCMcsL9dpD2Iy3H2したがって、およびの場合はそれぞれ塩になりますYYcs

    $ openssl passwd -salt YY testing
    YY9E0oGqqamCM
    $ openssl passwd -salt cs testing
    csL9dpD2Iy3H2
    

関連情報