/etc/shadow에 대한 비밀번호를 수동으로 생성

/etc/shadow에 대한 비밀번호를 수동으로 생성

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

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

답변1

다음 명령을 사용하여 동일한 목적을 달성할 수 있습니다.

방법 1(md5, sha256, sha512)

openssl passwd -6 -salt xyz  yourpass

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

방법 2(md5, sha256, sha512)

mkpasswd --method=SHA-512 --stdin

이 옵션 --methodmd5, sha-256sha-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()명령줄에 비밀번호를 입력하라는 메시지가 표시됩니다.

관련 정보