어떤 이유에서인지 원래 비밀번호를 인식하지 못해서 서버를 복원하고 루트 비밀번호를 새 비밀번호로 재설정했습니다. 여전히 루트의 SSH 비밀번호 수락을 거부합니다. 추가 조사 결과 손상된 etc/passwd 파일일 수 있는 것으로 나타났습니다.
Parallels에서는 다음 명령을 실행하라고 말합니다.
cat /etc/passwd | grep ^root | hexdump -c
파일 끝은 \n으로 끝나야 하지만 내 파일은 \r\n으로 끝나야 합니다. /bin/bash privs 사용자로 파일을 확인했습니다. 이제 문제가 발생합니다. 루트 디렉터리의 passwd 파일을 확인할 수 없습니다. 어떤 아이디어가 있나요?
나는 2개의 etc/passwd 위치가 있다는 것을 알고 있습니다. 시스템에 할당된 각 사용자에 대해 1개, 두 번째는 etc 루트 영역에 있습니다. 감사해요
답변1
/etc/passwd
Windows 편집기 또는 Windows 파일을 생성하도록 구성된 편집기를 사용하여 파일을 편집했습니다 . 그러지 마세요. Windows는 두 문자 시퀀스 CR-LF를 사용하여선을 넘어, Linux 및 기타 UNIX 시스템은 LF만 사용하고 CR을 정확히 줄 끝의 일반 문자로 처리합니다. 일반적으로 Linux에서 파일을 편집하려면 Linux 편집기를 사용하고, Windows 편집기를 사용하는 경우 파일을 Linux 개행 형식으로 저장해야 합니다.
이제 문제는 비밀번호가 유효하지 않다는 것이 아닙니다. 성공적으로 인증되었습니다. 로그인 프로세스가 끝나면 마지막 으로 수행하는 작업은 login
다음 에 설명된 대로 쉘을 실행하는 것입니다. 쉘이 마지막 열이므로 이제 루트의 쉘 에는 CR 문자가 포함 되도록 설정되어 있습니다.su
sshd
/etc/passwd
/etc/passwd
/bin/bash␍
␍
이 파일을 생성하거나 편집 /etc/passwd
하려면 루트 액세스가 필요합니다. 루트 계정을 효과적으로 비활성화했으므로 물리적 액세스가 필요합니다.
답변2
콘솔에서 비밀번호를 허용합니까? 시스템을 업그레이드하고 sshd_config가 교체되었을 수 있습니다. 기본적으로 SSH를 통한 루트 액세스는 비활성화되어 있습니다. 그런데 비밀번호는 /etc/passwd에 저장되지 않고 /etc/shadow에 저장됩니다. 영향을 받는 유일한 것은 /etc/passwd의 마지막 필드인 로그인 셸입니다. 파일을 편집하고 \r을 제거하는 것이 어떻겠습니까? 귀하의 사용자가 sudoers 목록에 있습니까? 그렇다면 sudo bash
파일을 실행하고 편집하세요.
답변3
로그인한 후 다음을 시도해 보세요.
su root
그런 다음 루트로 로그인합니다. 이 방법이 작동하면 passwd 파일을 편집할 수 있습니다.
답변4
참고 - 누군가 검색에서 이 내용을 발견한 경우.
손상된 비밀번호 파일은 사용할 수 없거나 사용할 su
수 없습니다 . sudo su -
그것은 말할 것입니다 No such shell bash^M
.
sudo su -s /bin/bash
그러나 실행할 대체 셸을 지정하기 위해 실행할 수 있습니다 . 또는 su -s /bin/bash
루트의 비밀번호가 있는 경우.