관련된Linux Mint의 루트 비밀번호가 왜 내 사용자 비밀번호인가요?
내 Mint 17.3 상자에는 루트 비밀번호가 설정된 것 같습니다. 비밀번호 해시 /etc/shadow
( 로 시작 $6$...
)가 표시됩니다. 이 비밀번호 해시를 내 (알려진) 사용자 비밀번호와 비교하고 싶습니다.
su -
어떤 이유로 든 (연결된 질문에서) 당신이 사용하지 않는다고 믿지 않습니다내 거비밀번호, 와뿌리비밀번호.
알려진 해시와 알려진 비밀번호를 비교하고 일치하는지 확인하는 쉬운 방법(예: bash)이 있습니까?
답변1
/etc/shadow
두 번째와 세 번째 문자 사이에 사용된 소금을 찾으세요 . $
보통 8개가 있습니다.
mkpasswd -m sha-512 -S <salt>
요청 시 사용해야 한다고 생각되는 비밀번호를 사용 하고 입력하세요. $6$<salt>$
접두사가 붙은 해시 값을 출력합니다 .
답변2
crypt(3)
마지막으로, 첫 번째 인수로 비밀번호를 사용하고 두 번째 인수로 해시( )를 사용하여 (GNU libc가 있는 Linux Mint와 같은 GNU 시스템에서) 함수를 호출해야 합니다 .libcrypt
$6$...
python
이 기능을 공개하여 다음을 수행할 수 있는 도구입니다.
HASH='$6$...' python2 -c 'import crypt, os, getpass
print(crypt.crypt(getpass.getpass(), os.environ["HASH"]))'
출력이 해시와 일치하면 비밀번호가 올바른 것입니다.
$HASH
위의 내용은 전체 해시(예: $6$rounds=1234$somesalt$6eFBNhSgwEwdfZBHueBedpcqaVKGcV2DJy/tQMFd3JL88hwvgTkISJShnOUrbtP1fRs8I9rGIdsgWCoiujxD2/
)이거나 가장 오른쪽 부분 $
(예: 솔트 및 선택적 라운드 수( $6$rounds=1234$somesalt$
) 포함)일 수 있습니다.
또는 다음에서 확인할 수 있습니다 python
.
HASH='$6$...' python2 -c '
import crypt, os, getpass
hash = os.environ["HASH"]
if crypt.crypt(getpass.getpass(), hash) == hash:
print "OK"
else:
print "Wrong password"'
(물론 $HASH
전체 해시가 포함되어야 합니다).
python
또한 이 모듈을 사용하여 ctypes
모든 라이브러리에서 함수를 호출할 수도 있습니다. 따라서 시스템 함수를 호출하는 또 다른 방법 은 다음과 같습니다 crypt()
(표준 모듈 중 하나처럼 수행할 필요는 없으며 모듈에 자체 별도 구현이 있다는 crypt
인상을 받았습니다 ).crypt
crypt()
HASH='$6$...' python2 -c '
from ctypes import *
import os, getpass
l = CDLL("libcrypt.so.1")
l.crypt.restype = c_char_p
print l.crypt(getpass.getpass(), os.environ["HASH"])'
답변3
ssh root@localhost
하지만 염두에 두어야 할 점은 배포판이 루트에 대한 비밀번호 기반 로그인을 완전히 비활성화했거나 키 쌍을 설치했거나 일반적인 그래픽 로그인 화면을 사용하여 사용자로 로그인했을 수 있다는 것입니다 root
. (자동 로그인을 활성화한 경우에도 대화 상자를 닫으면 다른 사용자로 로그인하라는 메시지가 나타날 수 있습니다.)