실수로 sudoers
파일에 실수를 했고 이제 파일을 변경하려고 하면 권한 거부 메시지가 표시되므로 수정할 수 없습니다. sudo
파일을 열 때 구문 오류가 표시되고 유효한 sudoers
소스를 찾을 수 없으며 명령이 실행되지 않습니다. 저는 데비안 버전인 raspbian을 사용하고 있습니다.
이 캐치 22에서 벗어나는 방법을 아는 사람이 있습니까?
답변1
- 비밀번호를 알고
root
설정한 경우su
Been을 사용하여root
편집 할 수 있습니다/etc/sudoers
. - 루트 파일 시스템이 SD 카드에 있는 경우 이를 꺼내고
/etc/sudoers
PC나 기타 장치(카드 리더기가 있는 경우)에서 편집할 수 있습니다. - U-Boot(부트 로더) 명령줄을 입력하고(일반적으로 키보드의 버튼을 누르거나 UART를 통해)
1
Linux 커널 명령줄에 추가하여 단일 사용자 모드로 들어갈 수 있습니다. 이 모드에서는root
편집할 수 있습니다/etc/sudoers
. 당신은 또한 볼 수 있습니다이것.
답변2
단일 사용자 모드로 부팅해야 합니다.
https://serverfault.com/questions/482079/debian-boot-to-single-user-mode
루트로서 sudoers 파일을 편집하여 문제를 해결할 수 있습니다. visudo
visudo는 파일을 저장하기 전에 파일에 대해 구문 검사를 수행하므로 나중에 이 작업을 다시 수행할 필요가 없도록 이 명령을 사용하여 sudoers 파일을 편집하는 것이 좋습니다 .
답변3
클라우드 인스턴스를 사용하는 경우 더 많은 문제가 발생합니다.
배포판에 따라 몇 가지 기술이 있지만 이미 Docker를 설치하여 실행 중인 경우 일반적으로 Docker 컨테이너로 문제를 해결할 수 있습니다. 이는 일반적으로 Docker 서비스가 루트로 실행되고 컨테이너 내 마운트된 볼륨에서 수행되는 모든 작업이 호스트 시스템의 루트에 의해 영향을 받기 때문입니다.
호스트 머신에서:
docker run --rm -ti -v /etc:/usr/local/etc busybox sh
"busybox"는 다운로드하는 데 시간이 오래 걸리지 않는 멋진 작은 배포판입니다. 작동하는 셸이 포함된 Docker 이미지가 이미 있는 경우 해당 이미지를 사용하세요.
Docker 컨테이너에서:
cd /usr/local/etc
vi sudoers
/etc/sudoers.d/
디렉터리 에 잘못된 파일을 추가했을 수 있습니다 . 이런 경우에는 단순히 파일을 삭제하는 것만으로도 충분할 수 있습니다.
컨테이너를 종료하면 sudo
다시 할 수 있습니다.
우와!