사용자의 비밀번호를 변경하고 싶습니다 /etc/shadow
. 나할 수 없다비밀번호 변경 프로그램(예: passwd
.)은 편집을 통해 수행되어야 합니다 /etc/shadow
. 파일은 /etc/shadow
마운트된 하드 드라이브에 있으며 chroot는 작동하지 않습니다.
예를 들어:
root:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::
otheruser:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::
누군가 루트의 비밀번호를 변경하는 쉘 스크립트를 제공 할 수 있습니까 sed
?awk
답변1
빈 비밀번호가 문제가 되지 않는다면 가장 쉬운 해결책은 /etc/passwd
대신 파일을 변경하는 것입니다 /etc/shadow
.
이 파일의 예시 라인은 /etc/passwd
다음과 같습니다:
root:x:0:0:root:/root:/bin/bash
이 줄의 "x"는 비밀번호가 실제로 섀도우 파일에 해시된 형식으로 저장된다는 의미입니다. 당신이 할 수 있는 한 가지는 다음과 같이 제거하는 것입니다:
root::0:0:root:/root:/bin/bash
root
그런 다음 실제로 사용자 이름 과 빈 비밀번호를 사용하여 로그인할 수 있습니다 .
루트 사용자의 비밀번호를 공백으로 두지 않으려면 루트 비밀번호를 제거한 후 루트 사용자로 변경하십시오.
user@machine$ su root
password: [blank]
그런 다음 다음 명령을 실행하여 루트 비밀번호를 변경합니다.
root@machine# passwd
New password: [desired password]
Retype new password: [desired password]
이제 루트 비밀번호를 알았습니다.
답변2
mkpasswd 도구를 사용하여 이를 수행할 수 있습니다. Cyberciti.biz에는 다음과 같은 제목으로 사용 방법에 대한 좋은 소개 가이드가 있습니다.Linux/UNIX: mkpasswd를 사용하여 임의의 비밀번호 생성.
예
mkpasswd --char=10 --crypt-md5
패키지는 일반적으로 호출되지만 makepasswd
도구는 일반적으로 호출됩니다 mkpasswd
.
보다매뉴얼 페이지자세한 내용은.
/etc/shadow
직접 콘텐츠 생성
다음 python 명령은 파일에 들어가는 부분을 생성합니다 /etc/shadow
.
파이썬
$ python -c "import crypt, getpass, pwd; \
print crypt.crypt('password', '\$6\$SALTsalt\$')"
진주
$ perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'
다음 출력을 생성합니다.
$6$SALTsalt$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/
/etc/shadow 변경
다음은 위 명령에서 새로 생성된 비밀번호 필드를 사용하여 기존 항목을 변경하는 명령입니다.
perl -pe 's|(root):(\$.*?:)|\1:\$6\$SALTsalt\$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/:|' /etc/shadow > /etc/shadow.new
노트:이것은 조잡한 예이지만 작동합니다. 해시된 비밀번호를 생성한 명령에서 결과를 가져와야 하며 달러 기호($)를 슬래시(\$)로 이스케이프해야 합니다.
결과는 새 파일 /etc/shadow.new에 저장됩니다. 결과를 확인한 후 /etc/shadow
새 파일로 교체 하시면 됩니다 /etc/shadow.new
.
답변3
/etc/shadow에서 모든 사용자 비밀번호를 삭제하고 시스템을 시작한 후 비밀번호 없이 로그인한 후 passwd 명령을 사용하십시오. 가능하다면 완료될 때까지 시스템을 네트워크에 연결하지 마십시오.