잘못된 sudoers 파일을 어떻게 편집합니까? 아래 오류가 발생하여 다시 수정하여 수정할 수 없습니다.
다음과 같은 일이 발생합니다.
$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
잘못된 sudoers 파일을 어떻게 편집합니까? 아래 오류가 발생하여 다시 수정하여 수정할 수 없습니다.
다음과 같은 일이 발생합니다.
$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
답변:
현대 우분투 시스템 (및 다른 많은 GNU / Linux 배포판)에서 손상된 sudoers
파일을 수정하는 것은 실제로 매우 쉽고 재부팅, 라이브 CD를 사용하거나 머신에 물리적으로 액세스 할 필요가 없습니다.
SSH를 통해이를 수행하려면 머신에 로그인하고 명령을 실행하십시오 pkexec visudo
. 머신에 물리적으로 액세스 할 수있는 경우 SSH가 필요하지 않습니다. 터미널 창을 열고 해당 pkexec
명령 을 실행하십시오.
당신이 (또는 다른 사용자)를 가정하는 것은으로 프로그램을 실행할 권한이 root
PolicyKit에, 당신은 당신의 암호를 입력 한 다음 그것을 실행 visudo
으로 root
, 당신이 당신의 문제를 해결할 수 있습니다 /etc/sudoers
.
구성 파일 중 하나를 편집해야하는 경우 /etc/sudoers.d
(이 상황에서는 드물지만 가능)를 사용하십시오 .pkexec visudo -f /etc/sudoers.d/filename
문제를 해결하기 위해 루트로 추가 시스템 관리 명령을 수행해야하는 관련 상황이있는 경우 (이 상황에서는 드물지만 다른 경우에서는 일반적 임)를 사용하여 대화식 루트 쉘을 시작할 수 있습니다 pkexec bash
. 일반적으로 실행하는 비 그래픽 명령 sudo
은 pkexec
대신 실행할 수 있습니다 .
(시스템 root
에 PolicyKit과 같이 프로그램을 실행할 권한이있는 사용자 계정이 두 개 이상인 경우 해당 작업에 대해 암호를 요청하기 전에 사용할 계정을 선택하라는 메시지가 표시됩니다.)
sudo parted -l
파티션을보기 위해 실행하여이 작업을 수행 할 수 있습니다. 아마도 하나의 ext4 파티션이있을 수 있으며 이것이 루트 파일 시스템입니다.
설치된 Ubuntu 시스템의 루트 파일 시스템이 / dev / sda1에 있다고 가정하십시오. 그런 다음로 마운트 할 수 있습니다 sudo mount /dev/sda1 /mnt
. 그런 다음로 설치된 시스템의 sudoers 파일을 편집 할 수 있습니다 sudo nano -w /mnt/etc/sudoers
. 또는 더 나은 방법으로
sudo visudo -f /mnt/etc/sudoers
(잘못된 구문으로 sudoers 파일을 저장하지 못하게합니다).
#include
지시문은 sudoers
특별히 취급됩니다. 이 #
경우 행은 나머지 행을 주석으로 해석하지 않습니다. 으로 man sudoers
말한다 : "파운드 기호 ( '#')를 ... 그것은 #include 지시문 또는하지 않는 일부 경우를 제외하고 (코멘트를 표시하는 데 사용됩니다"참조 visudo를 : #includedir sudoers.d (에서 보관 lzone.de/ 블로그 ).
pkexec visudo
에서 올바른 비밀번호를 허용하지 않는 비밀번호를 요청합니다. "AUTHENTICATION FAILED"오류가 발생합니다.
항상 visudo
sudoers 파일을 편집 하는 데 사용 하십시오. 직접 편집하지 마십시오. 유효성을 검사하지 않으면 디스크에 저장하지 못하게됩니다.
입력 :
pkexec visudo
그런 다음 마지막 줄을 변경하십시오.
#includedir /etc/sudoers
에:
#includedir /etc/sudoers.d
문제를 해결해야합니다.
#
from 을 제거 #includedir
하면 구문 오류가 발생하며, #
적어도 Ubuntu 12.10에서 지시문의 일부입니다.
나와 같은 다른 사람이 pkexec를 설치 하지 않았 거나 vi, visudo, nano 또는 sudoers 파일을 변경하기 위해 vi, visudo, nano 또는 기타 편집기를 실행할 수없는 경우이 프로세스로 확신 할 수 있습니다.
rw 용 부트 장치를 다시 마운트하고 사용자에게 exec 권한을 적용하고 파일을 편집하십시오.
mount -n -o remount,rw /
chmod u+x /etc/sudoers
nano /etc/sudoers
그 실수를 고치고 행복해 :)
visudo
대신 사용 합니다 nano /etc/sudoers
.
sudoers
파일 을 엉망으로 만들려면 다음을 수행해야합니다.
visudo
하고 파일을 수정하십시오.출처 : -http : //mario.net.au/content/recover-etcsudoers-ubuntu-1204
잘못된 것은 없습니다. #include sudoer.d 제거 #include sudoer.d는 아무런 차이가 없습니다.
그러나 구문 오류가 없는지 확인하십시오. 나는 같은 문제가 있었지만 수정하는 데 몇 시간을 소비했으며 구문 오류라는 것을 알았습니다. 설명서를 참조하여 올바르게 작성하십시오.
예를 들어 사용자 이름이 다음과 같다고 가정하십시오.
dolly ALL = (ALL) ALL NO PASSWD: ALL
올바른 구문은
dolly ALL = (ALL) ALL //give permission to everything, not good
또는
dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission
도움이 되었기를 바랍니다
visudo
이러한 파일을 편집 할 때 항상 사용 하는 것입니다. 이렇게하면 파일을 수정하기 전에 구문 오류가 없는지 확인할 수 있습니다. visudo
는 단지 편집을위한 것이 아니라 /etc/sudoers
파일을 만들고 편집 할 것입니다 /etc/sudoers.d
. 또한 원하는 텍스트 편집기에서 작동합니다. 자세한 내용 은 맨 페이지 를 참조하십시오.
thunderbird
, 루트로 실행 하면 충분히 복잡한 앱 ( 루트로 실행해서는 안됨 포함)이 사용자에게 전체 시스템 액세스 권한을 효과적으로 부여 하기 때문에 매우 간단한 명령 / 앱에만 유용 합니다. 겉으로는 단순한 기능조차도 완전한 루트 액세스를 가능하게합니다. 예를 들어, 임의의 위치에 파일을 루트로 저장할 수있는 프로그램을 실행할 수있는 사용자는 전체 루트 액세스 권한을 얻을 수 있습니다 (자체를 설치할 수 /etc/sudoers
있거나 구문 제한으로 인해 자체적으로 설치할 수 있음 /etc/crontab
).
grub에서도 부트 항목을 편집 할 수 있습니다.
PC를 재부팅하고 grub이 표시 될 때까지 기다리십시오. 그런 다음 "Ubuntu"항목에서 "e"를 눌러 편집하십시오.
"linux ="또는 "kernel ="이있는 행을 찾아 해당 행의 끝에 "단일"을 추가하십시오.
그런 다음 F10을 눌러이 임시 수정 된 부팅 항목을 부팅하십시오. 루트 권한이있는 쉘 (GUI 제외)을 제공하고 s.th로 sudoers 파일을 편집 할 수 있습니다. nano / etc / sudoers와 같이 이전 상태로 돌아갑니다.
그런 다음 재부팅하고 완료하십시오.
pkexec visudo
그런 다음 실수를 되 돌리십시오
visudo
은 루트로 실행해야합니다. 경우 sudo
작동하지 않는, pkexec
때로는 않습니다. 이것은 내 이전 답변으로 덮여 있지만 ... 정답 visudo
은 자체적으로 (루트로 실행되지 않을 때) 작동하지 않으며 권장 사항이 다른 답변과 상당히 겹치는 경우에도 정확하고 간단한 답변에 가치가있을 수 있습니다. 물론, 복구 모드로 들어가면 루트 셸이며 다음 과 같은 명령에는 필요 하지 sudo
않습니다 . 어쩌면 그것은 당신이 의미하는 것입니다 ...visudo
pkexec
VirtualBox에서 실행되는 Ubuntu 16.04 (차이를 만들 수는 없음)에서 위의 방법이 작동하지 않습니다 (파일 끝의 잘못된 행). 일한 것은 :
su -
을 내린 후 자신의 사용자 이름 암호를 지정하십시오.root@ubuntu-xenial:~#
(가) 경우, 프롬프트 /etc/sudoers
너무 깨지거나 비어 있습니다. 이 경우 어떤 일이 발생할지 잘 모르겠습니다.visudo
파일을 실행 하고 수정할 수 있습니다.Ctrl + X
수정 된 버퍼를 저장하라는 메시지가 표시됩니다. 보도 Y
및Enter
경우 당신이 /etc/sudoers
비어 있거나 뭔가가, 그리고 당신이 그것을 편집 할 수 있습니다, 여기에 광산의 내용이다 :
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
더 간단한 해결책이 있습니다. 재부팅, 복구 모드 또는 pkgexec
( pkgexec
작동하지 않았으며 사용해야하는 이유 또는 방법을 모른 채)하지 않고 간단하게 수행하십시오.
su root # switch to root user, without using sudo (which is broken at this point)
your_favorite_editor /etc/sudoers # e.g. nano
그런 다음 구문 오류를 수정하십시오!