Linux 이미지의 루트 비밀번호 수정

Linux 이미지의 루트 비밀번호 수정

저는 Jessie 버전의 데비안을 만들고 있습니다. 비밀번호는 /etc/shadow빌드 트리에 저장되지만 분명히 솔트되어 있으므로 파일 편집만으로는 변경할 수 없습니다. 이것이 내 설치된 시스템이라면 에 전화할 수 있지만 passwd여기서는 빌드 트리에 있는 파일의 비밀번호를 변경하고 싶습니다.

새 버전으로 SD를 플래시하기 전에 루트 비밀번호를 어떻게 변경합니까?

답변1

파일이 포함된 디렉터리 트리가 있는 단계 …/etc/shadow(파일 시스템 이미지를 구축하기 전)에서 원하는 비밀번호 해시를 삽입하도록 파일을 수정합니다.

가장 쉬운 방법은 충분히 새로운 버전을 사용하는 것입니다.chpasswdLinux 섀도우 유틸리티 제품군의 도구(Debian wheezy는 충분히 새로운 기능임) 및 이 -R옵션. 사용 예:

chpasswd -R /path/to/build/tree <passwords.txt

passwords.txt다음과 같은 줄을 포함합니다 .

root:swordfish
alibaba:opensesame

빌드 환경이 이를 지원하지 않는 경우 chpasswd -R다음을 호출하여 비밀번호 해시를 생성하는 도구를 사용할 수 있습니다.crypt함수를 작성하고 shadow텍스트 조작을 통해 파일에 삽입합니다. 예를 들어(테스트되지 않은 코드):

#!/usr/bin/python
import base64, crypt, os, re, sys
for line in sys.stdin.readlines():
    (username, password) = line.strip().split(":")
    salt = "$6$" + base64.b64encode(os.urandom(6))
    hashes[username] = crypt.crypt(password, salt)
old_shadow = open("etc/shadow")
new_shadow = open("etc/shadow.making", "w")
for line in old_shadow.readlines():
    (username, password, trail) = line.lstrip().split(":", 3)
    if hashes.has_key(username):
        line = username + ":" + hashes[username] + ":" + trail
    new_shadow.write(line)
old_shadow.close()
new_shadow.close()
os.rename("etc/shadow.making", "etc/shadow")

관련 정보