배경
실험적으로 항목을 수동으로 생성하여 새 사용자(루트)를 추가했습니다
/etc/passwd
.openssl
구체적으로 내가 사용한 비밀번호를 해싱했지만OpenSSL 1.1.1g
결과는 다른 버전에서도 동일해야 합니다.testing
나는 문자열 " "을 해시 할 때마다 다른 결과를 얻는다는 것을 알았습니다 .
# openssl passwd testing YY9E0oGqqamCM # openssl passwd testing csL9dpD2Iy3H2
/etc/passwd
그런 다음 다음과 같이 두 개의 해시를 파일 에 추가했습니다 .
# 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
해시 항목의 처음 두 문자는 소금입니다.
openssl passwd
더도 말고 덜도 말고 항상 2자 길이의 솔트가 있어야 합니다.YY9E0oGqqamCM
csL9dpD2Iy3H2
따라서 및 의 경우에는 각각 염이 됩니다YY
.cs
$ openssl passwd -salt YY testing YY9E0oGqqamCM $ openssl passwd -salt cs testing csL9dpD2Iy3H2