/etc/shadow
가상 머신 이미지 내에서 루트 비밀번호를 변경하려면 수동으로 편집해야 합니다 .
/etc/shadow
비밀번호를 승인하고 표준 출력에서 호환되는 비밀번호 해시를 생성할 수 있는 명령줄 도구가 있습니까 ?
답변1
다음 명령을 사용하여 동일한 목적을 달성할 수 있습니다.
방법 1(md5, sha256, sha512)
openssl passwd -6 -salt xyz yourpass
참고: 전달하면 -1
MD5 비밀번호, -5
SHA256 및 -6
SHA512가 생성됩니다(권장).
방법 2(md5, sha256, sha512)
mkpasswd --method=SHA-512 --stdin
이 옵션 --method
은 md5
, sha-256
및sha-512
방법 3(des, md5, sha256, sha512)
@tink가 제안한 대로 다음을 사용하여 비밀번호를 업데이트할 수 있습니다 chpasswd
.
echo "username:password" | chpasswd
또는 에서 암호화된 비밀번호를 사용할 수 있습니다 chpasswd
. 먼저 다음 명령을 사용하여 생성하십시오.
perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'
그런 다음 생성된 비밀번호를 사용하여 업데이트할 수 있습니다 /etc/shadow
.
echo "username:encryptedPassWd" | chpasswd -e
또한 이 비밀번호를 사용하여 암호화한 후 새 사용자를 생성할 수도 있습니다. 예를 들면 다음과 같습니다.
useradd -p 'encryptedPassWd' username
답변2
Ubuntu 12.04에는 mkpasswd(whois 패키지에 있음)가 있습니다. crypt(3)에 대한 과도한 기능을 갖춘 프런트 엔드
mkpasswd -m sha-512 -S saltsalt -s <<< YourPass
어디:
-m
= 비밀번호를 계산하려면 TYPE 메소드를 사용하세요. TYPE이 도움이 되면 사용 가능한 메소드를 인쇄합니다.-S
= 소금을 사용함.
예를 들어
$ mkpasswd -m help
-s = Read password from stdin
답변3
이 솔루션에는 다음과 같은 장점이 있습니다.
추가 설치가 필요하지 않습니다
쉘 기록에 비밀번호를 저장하지 마세요
당신을 위한 무작위 소금 생성
현대적이고 강력한 해싱 알고리즘 SHA-512를 사용합니다.
오류를 방지하려면 비밀번호를 다시 묻는 메시지를 표시하세요.
$ python3 -c "from getpass import getpass; from crypt import *; \ p=getpass(); print('\n'+crypt(p, METHOD_SHA512)) \ if p==getpass('Please repeat: ') else print('\nFailed repeating.')"
파이썬 3.12 이상
편집하다:Python 3.13에서 이 모듈이 더 이상 사용되지 않으면 crypt
다음 코드 조각을 사용할 수 있습니다:
import os, base64, ctypes, getpass
salt = base64.b64encode(os.urandom(16), altchars=b"./").rstrip(b"=")
crypt = ctypes.CDLL("libcrypt.so.2").crypt
crypt.restype = ctypes.c_char_p
p=getpass.getpass()
if p==getpass.getpass("Please repeat: "):
print("\n"+crypt(p.encode(), b"$6$"+salt).decode())
else:
print("\nFailed repeating.")
알파벳 [./0-9A-Za-Z]
(B64,Base64와 혼동하지 마세요.), 시스템 crypt
라이브러리 로드(Python_crypt
모듈이 사용 중임) 지정된 형식(SHA512)으로 함수를 호출하고 crypt
항목을 계산합니다.$6$
salt
OpenSSL 솔루션
그러나 OpenSSL은 시스템에 자주 나타나며 passwd
최신 알고리즘이 포함된 것처럼 보이는 명령을 제공합니다.v1.1.1부터이므로 사용하기가 더 쉬울 수 있습니다.
예를 들어( -6
여기서는 SHA512인 알고리즘 6을 의미하며 솔트는 자동으로 생성됩니다):
$ openssl passwd -6
Password:
Verifying - Password:
$6$BIAw/F3wLlH4qofD$2dqhHKfCZNuLScGHKFdkEBmCwtTpInOZSwglqCAAeWgDVM7duqCZLJU69/Ie2LZHJMqUeT7mbx/.HLNrH50mk1
-salt
하지만 이 매개변수는 빈 솔트를 허용하지 않고 솔트에 잘못된 값(예: )을 허용하므로 주의하세요 :
.
인용하다
답변4
데비안 기반 시스템이 없는 사람들을 위한 것입니다. Python3도 잘 작동합니다.
python3 -c 'import crypt, getpass; print(crypt.crypt(getpass.getpass()))'
getpass.getpass()
명령줄에 비밀번호를 입력하라는 메시지가 표시됩니다.