
이는 Raspbmc가 설치된 Raspberry Pi와 관련이 있습니다. Raspberry Pi StackExchange 사이트가 있다는 것을 알고 있지만 여기에서 이 문제에 대해 더 많은 관심을 얻을 수 있을 것이라고 생각했습니다.
문제는 사용자 중 한 명에게 권한을 /etc/sudoers
부여하기 위해 수정했지만 NOPASSWD
파일을 중단하는 도중에 로그인/사용을 시도할 때마다 다음 오류가 발생하는 것 같습니다 sudo
.
sudo: parse error in /etc/sudoers near line 19
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
비슷한 게시물을 찾았습니다우분투게다가스택 오버플로, 그러나 문제는 모든 답변에 루트 비밀번호가 필요하다는 것입니다.Raspbmc에서는 루트 계정이 기본적으로 비활성화되어 있습니다., 그리고 변경을 시도하기 전에는 분명히 활성화하지 않았습니다 /etc/sudoers
.
그래서 내 질문은: 루트 액세스가 활성화되지 않은 경우 파일을 어떻게 수정합니까? 심지어 가능합니까?
답변1
루트에 액세스하려면 단일 사용자 모드에서 Pi를 부팅할 수 있어야 합니다.
다른 컴퓨터를 사용하여 줄 끝에 수정 cmdline.txt
하고 추가합니다. 그런 다음 SD 카드에서 Pi를 부팅하면 자동으로 업데이트할 수 있는 루트 프롬프트가 표시됩니다.single
/etc/sudoers
답변2
이틀 동안 조사하고 웹을 탐색한 끝에 마침내 해결책을 찾았고 나만의 Raspberry Pi 시스템을 저장할 수 있었습니다(SD 카드를 다시 포맷하고 처음부터 시작할 필요가 없음)!
메모:이 답변은 꽤 깁니다. 실제 솔루션에 빠르게 도달하고 싶다면 아래로 스크롤할 수 있는 헤더를 추가했습니다. 하지만 전체 답변을 읽어보실 것을 권장합니다. 답변을 통해 Raspbian 배포판과 다른 Linux 배포판 간의 차이점에 대한 통찰력을 얻을 수 있을 뿐만 아니라 인터넷에서 찾은 많은 제안 솔루션이 Pi에서 작동하지 않을 수 있는 이유에 대한 명확성을 얻을 수 있습니다. .
따라서 일반적으로 Linux 환경에서 재부팅할 필요 없이 손상된 sudo를 복구하는 가장 빠른 방법은 PolicyKit 또는 pkexec
다음과 같은 -명령을 사용하는 것입니다.
pkexec visudo
그러나 Pi에서는 작동하지 않을 가능성이 높습니다. 루트 비밀번호를 요청하지만 비밀번호는 허용되지 않습니다. (내 말은, 루트 비밀번호 설정을 기억하시나요? 잠깐, 알고 계시나요? 그런 다음 별표*로 건너뛰세요.)
Ubuntu와 같은 일부 Linux 배포판에는 부팅하는 동안 Shift 키를 눌러 액세스할 수 있는 복구 모드가 있으며 사용자 친화적인 인터페이스를 제공하고 루트 셸 프롬프트에 액세스할 수 있습니다. 손상된 파일을 수정하세요. Pi의 Raspbian Linux 배포판에는 이러한 종류의 복구 모드가 제공되지 않으므로 솔루션은 우리에게 적합한 솔루션이 아닙니다. 그러나 Pi는 부팅 시 Shift 키를 눌러 일종의 복구 모드로 들어가라는 메시지를 표시하며 Pi의 복구 모드 또는 NOOBS 대화 상자로 들어가면 Pi에서 손상된 sudo를 복구하는 올바른 경로에 있는 것입니다.
sudo를 복구하는 또 다른 일반적인 방법은 루트 쉘 프롬프트로 이동하는 단일 사용자 모드로 부팅하는 것입니다. 이를 수행하는 방법은 시스템의 부팅 파티션에 있는 -file single
끝에 단어를 추가하는 것입니다 . cmdline.txt
다음에 시스템이 부팅되면 단일 사용자 모드로 부팅됩니다.
Pi의 복구 모드 또는 NOOBS 대화 상자를 통해 -file을 편집할 수 있으므로 Pi에서 이 솔루션을 쉽게 시도해 볼 수 있습니다 cmdline.txt
. 복구 모드 또는 NOOBS 대화 상자에서 "Edit config" 아이콘을 누르면 두 개의 파일을 편집할 수 있는 편집기가 열립니다. 그 중 하나는 cmdline.txt
. 편집기에서 "확인"을 누르면 변경 사항이 저장됩니다.
불행하게도 Pi에서 단일 사용자 모드나 "복구 모드"로 부팅하면 다음과 같은 메시지가 나타날 가능성이 높습니다.
Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.
Press Enter to continue.
이전에 언급한 루트 비밀번호 프롬프트가 비밀번호를 허용하지 않는 이유와 더불어 이는 기본적으로 Raspbian에 루트 계정에 설정된 비밀번호가 없기 때문입니다. 아무것도 아닌 비밀번호나 비밀번호가 필요하지 않은 비밀번호와 혼동하지 마십시오. Raspbian은 다른 Linux 배포판(예: Raspbian의 파생물인 Debian)과 마찬가지로 사용자가 계정 자체가 아닌 sudo를 통해 루트로 작동할 것으로 기대합니다. 따라서 루트 계정은 우리가 겪고 있는 "잠금" 상태에 있습니다.
*예를 들어 명령을 통해 루트 비밀번호를 직접 설정한 경우 -명령을 사용하여 단일 사용자 모드로 부팅 sudo passwd root
할 수 있습니다 . pkexec
이 작업을 수행할 때는 sudo를 사용해야 하므로 sudo가 손상된 후에는 분명히 해결책이 아니지만 다음을 제안하는 솔루션을 적용할 때 일부 사람들이 Pi를 수정하는 데 성공한 이유일 수 있으므로 이 점을 지적합니다 pkexec
. 명령 또는 단일 사용자 모드. 이 사람들은 어느 시점에서 루트 암호를 수동으로 설정하여 시스템의 루트 계정을 잠금 해제했습니다.
해결책
이 블로그 게시물우리가 해야 할 일을 어떻게 해야 하는지 설명합니다. 단계는 단일 사용자 모드를 통해 sudo를 복구하려고 할 때 수행한 단계와 거의 동일합니다. -file을 편집하기 위해 블로그 게시물에서 언급한 번거로운 작업을 모두 수행할 필요는 없으며 cmdline.txt
대신 NOOBS 대화 상자에서 수행하면 됩니다. 핵심은 -file init=/bin/sh
끝에 추가하는 것입니다 cmdline.txt
. 해당 조각을 추가하면 다음에 Pi를 부팅할 때 루트 쉘 프롬프트가 표시됩니다.
처음에는 파일 시스템이 읽기 전용 모드로 로드되므로 편집하기 전에 다음 명령을 실행하여 읽기 및 쓰기 모드에서 루트 파티션을 다시 마운트해야 합니다.
mount -o remount,rw /dev/mmcblk0p2 /
이제 손상된 sudo 파일을 포함하여 모든 파일을 자유롭게 편집할 수 있는 루트 쉘 프롬프트에 있어야 합니다.
답변3
가장 쉬운 해결 방법은 LiveDVD 또는 LiveUSB(이상적으로는 LiveUSB, 이상적으로는 Linux OS)에서 다른 OS를 부팅한 다음 디스크를 마운트하고 수동으로 파일을 변경하는 것입니다. 이전에도 비슷한 일을 하다가 이런 식으로 고쳤습니다. 모든 파일은 라이브 시스템에서 보고 편집할 수 있습니다. 드라이브를 암호화하지 않은 이상; 그러면 상황이 좀 더 복잡해집니다.
질문이 있는 경우 알려주시면 답변을 수정하겠습니다. 라이브 USB 설정이 얼마나 편하실지 모르겠지만 그리 어렵지는 않습니다.