저는 Jessie 버전의 데비안을 만들고 있습니다. 비밀번호는 /etc/shadow
빌드 트리에 저장되지만 분명히 솔트되어 있으므로 파일 편집만으로는 변경할 수 없습니다. 이것이 내 설치된 시스템이라면 에 전화할 수 있지만 passwd
여기서는 빌드 트리에 있는 파일의 비밀번호를 변경하고 싶습니다.
새 버전으로 SD를 플래시하기 전에 루트 비밀번호를 어떻게 변경합니까?
답변1
파일이 포함된 디렉터리 트리가 있는 단계 …/etc/shadow
(파일 시스템 이미지를 구축하기 전)에서 원하는 비밀번호 해시를 삽입하도록 파일을 수정합니다.
가장 쉬운 방법은 충분히 새로운 버전을 사용하는 것입니다.chpasswd
Linux 섀도우 유틸리티 제품군의 도구(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")