내 서버에서 Ansible을 구성하고 모든 서버에서 Ansible 사용자를 생성한 다음 그들에게 sudo 액세스 권한을 부여했습니다. 따라서 Ansible 사용자를 사용하여 다른 서버로 ssh할 때마다 비밀번호를 묻지 않아야 합니다. 두 서버 모두에서 성공적으로 구성했지만 파일을 변경하여 다른 서버에서 구성하면 /etc/sudoers/
시스템이 응답하지 않게 된 다음 터미널을 다시 시작했고 이제 루트 사용자로 서버에 로그인하려고 하면 오류가 발생합니다.
$ sudo su
/etc/sudoers: syntax error near line 121 <<< sudo: parse error in /etc/sudoers near line 121 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
답변1
sudoers
파일이 손상되었으므로 sudo
모든 액세스가 거부됩니다. 루트 비밀번호가 있으면 이를 사용하여 문제를 해결할 수 있습니다.
su -
visudo
그렇지 않은 경우 복구 디스크를 사용하여 시스템을 부팅하고 sudoers
그런 방식으로 파일을 재설정해야 합니다. 훨씬 더 복잡합니다.
이를 방지하기 위해 구문 검사를 수행하므로 /etc/sudoers
파일을 사용하지 않고 수동으로 편집 하지 마십시오 .visudo
그건 그렇고, 사용할 필요가 없습니다 sudo su
(루트 권한을 얻는 데 사용되며 이미 루트 권한으로 다시 제공하도록 sudo
요청합니다 ). 아니면 완전히 적절할 수도 있습니다.su
sudo -s
sudo -i
답변2
루트 비밀번호가 없지만 사용자 계정이 해당 wheel
그룹(또는 sudo
Debian/Ubuntu의 경우 그룹)에 있는 경우 시도해 볼 수 있는 작업이 한 가지 더 있습니다.
pkexec visudo
비밀번호를 묻는 메시지가 표시되고(보다 자세한 정보 ) 파일을 sudo
편집할 수 있습니다 ./etc/sudoers
활성 루트 세션이 남아 있지 않고 이를 가져올 수 없는 경우( 또는 사용 중 sudo
) pkexec
유감스럽게도 가동 중지 시간 없이 이 문제를 해결할 수 있는 방법이 없습니다.
저는 Oracle Cloud OPC에 익숙하지 않습니다. 그러나 분명히 클라우드 서버에 있고 이러한 서버가 여러 개 있으므로 이 문제를 해결하는 마지막 방법은 클라우드 관리 인터페이스를 사용하여 서버를 강제 종료한 다음 문제의 클라우드 서버에서 가상 시스템 디스크의 연결을 일시적으로 끊는 것입니다. 가상 디스크를 두 번째 클라우드 서버에 추가 디스크로 추가합니다. 그런 다음 문제 서버의 루트 파일 시스템을 /mnt
두 번째 서버("복구 서버")에 마운트하고 이를 실행하여 visudo -f /mnt/etc/sudoers
구문 오류를 수정할 수 있습니다. 이 작업을 수행한 후 복구 서버에서 디스크를 마운트 해제하고 연결을 끊은 다음 문제가 있는 서버로 반환합니다.
클라우드 관리 인터페이스에 가상 머신으로 이 작업을 수행하는 데 필요한 기능이 없는 경우 클라우드 운영자(예: Oracle?)에 문의하여 지원을 받아야 합니다. 그들은 이런 종류의 문제에 대해 매우 잘 알고 있을 것입니다. 오타로 인해 클라우드 서버에 대한 루트 액세스 권한을 잃은 사람은 확실히 당신이 처음은 아닙니다.