/ etc / shadow의 비밀번호를 수동으로 생성 비밀번호를 변경하려면

/etc/shadow가상 머신 이미지 내부의 루트 비밀번호를 변경하려면 수동으로 편집해야합니다 .

/etc/shadow비밀번호를 사용하고 표준 출력에서 ​​호환되는 비밀번호 해시를 생성하는 명령 행 도구가 있습니까?



답변

동일한 명령으로 다음 명령을 사용할 수 있습니다.

방법 1 (md5, sha256, sha512)

openssl passwd -6 -salt xyz  yourpass

참고 : 전달 -1하면 MD5 비밀번호, -5SHA256 및 -6SHA512 (권장) 가 생성됩니다.

방법 2 (md5, sha256, sha512)

mkpasswd --method=SHA-512 --stdin

방법 수용 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"'

그런 다음 나중에 생성 된 비밀번호를 사용하여 업데이트 할 수 있습니다.

echo "username:encryptedPassWd"  | chpasswd -e

이 암호화 된 비밀번호는 다음과 같이 비밀번호를 사용하여 새 사용자를 작성하는 데 사용할 수 있습니다.

useradd -p 'encryptedPassWd'  username

답변

Ubuntu 12.04에는 whois 패키지에서 mkpasswd가 있습니다.

mkpasswd  -m sha-512 -S saltsalt -s <<< YourPass

어디:

  • -m= TYPE 방법을 사용하여 비밀번호를 계산하십시오. TYPE이 도움이되면 사용 가능한 방법이 인쇄됩니다.
  • -S = 소금 사용.

예 :

$ mkpasswd -m help

-s = Read password from stdin

답변

이 솔루션에는 다음과 같은 이점이 있습니다.

  • 추가로 설치할 것이 없습니다
  • 쉘 히스토리에 비밀번호를 저장하지 않습니다
  • 당신을 위해 무작위 소금을 생성합니다
  • 현대적이고 강력한 해싱 알고리즘 인 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.')"
    

참고 문헌


답변

데비안 기반 시스템이없는 사람들. Python3도 잘 작동합니다.

python3 -c 'import crypt; print(crypt.crypt("test"))'

참고 : 문자열 “test”는 암호화 된 문자열로 생성하는 비밀번호입니다.


답변

현재 방법 중 어느 것도 받아 들일 수 없습니다-그들은 명령 줄에서 암호를 전달합니다 (쉘 역사에서 끝남). 추가 유틸리티 ( python3, makepasswd) 설치가 필요 하거나 하드 코딩 된 소금을 사용하거나 오래된 해싱 기술을 사용합니다.

이 방법은 암호를 묻는 메시지가 나타난 후 SHA-512 해시를 생성하고 임의의 소금을 사용합니다.

비표준 라이브러리없이 Python 2를 사용하는 방법 :

python2 -c 'import crypt, getpass,os,base64; print crypt.crypt(getpass.getpass(), "$6$"+base64.b64encode(os.urandom(16))+"$")'

프롬프트없이 수행하려면 : (이것은 암호를 명령 기록에 남겨 둡니다)

python2 -c 'import crypt, os,base64; print crypt.crypt("MyPassword", "$6$"+base64.b64encode(os.urandom(16))+"$")'

답변

opensslchpasswd -e쌍은 RHEL6에서 내 경우에는 작동하지 않았다. 결합 openssl passwdusermod -p지휘는 일을했다.

솔트 값과 함께 비밀번호의 해시 값을 생성하십시오.

$ openssl passwd -1  -salt 5RPVAd clear-text-passwd43

$1$5RPVAd$vgsoSANybLDepv2ETcUH7.

그런 다음 암호화 된 문자열을 usermod에 복사하십시오. 작은 따옴표로 묶어야합니다.

$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root

섀도 파일에서 확인하십시오.

$ grep root /etc/shadow

root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::

답변

암호를 생성하는 또 다른 방법은 openssl도구를 사용하는 것 입니다.

MD5 비밀번호 생성

openssl passwd -1 -salt SaltSalt SecretPassword
# output: $1$SaltSalt$FSYmvnuDuSP883uWgYBXW/

DES 비밀번호 생성

openssl passwd -crypt -salt XR SuprScrt
# output: XR1dOp2EVMph2