안녕하세요 Pulluper 입니다. ☺️☺️
서버를 만들고 잘 쓰고 있었는데, 어느새 부턴가 sudo 가 안되기 시작하였습니다.
큰 불편함이 없이 그냥 사용하였는데, 'nvtop' 을 깔아야 해서 sudo를 되게끔 만들고 싶었습니다.
원격으로 서버를 사용하기 때문에 해결 하기가 힘들었지만! 실제 서버에 가서 드디어 해결하였습니다.
sudo apt install nvtop
문제는 다음과 같았습니다. sudo 명령어를 입력하면 다음 오류가 뜹니다.
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
구글링 후에 /etc/sudoers 파일을 수정하면 된다는 것을 알았습니다. (권한 부여할 user 명 추가)
그러나! /etc/sudoers 파일은 visudo로 열어야 한다는 것을 알았습니다. 따라서 다음 명령어를 치면,
visudo /etc/sudoers
이런 .. visudo 도 sudo가 필요합니다.
sudo: can't open /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
그래서 또 다른 방법인 'pkexec visudo' 를 사용하면 해당 user 의 비밀번호를 입력하면 변경할 수 있다고 합니다.
pkexec visudo
그런데, 해당 User 의 passwd 를 입력하여도, 다음과 같은 오류로 권한이 없다 합니다. passwd 를 바꾸어 입력하여도 동작 할 수 없었습니다.
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/sbin/visudo' as the super user
Authenticating as: Thomas,,, (tuc) Password: polkit-agent-helper-1:
error response to PolicyKit daemon:
GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for
cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
This incident has been reported.
여기서 root 계정의 힘을 빌려와서 이를 해결하려 했습니다.
su -
아뿔싸.. root 계정의 비밀번호를 잊어서.. 작동이 안되는 것 입니다. (여기까지 몇번을 시도했는데 안되어서 다른 방법을 찾아보았습니다. )
이제 해결방법은 root를 계정의 비밀번호를 초기화 하여 root 로 pkexec visudo 로 /etc/sudoers 를 변경하게 하는것 이었습니다.
root 계정 초기화
실제 서버에 가서 GNU GRUB으로 부팅시키기 위해서 재부팅을 하였습니다. ASUS 로고가 뜨고 아래 'please press DEL, or F2 to enter UEFI BIOS setting' 이라는 화면이 뜰 때, 'esc' 를 타이밍 맞게 두번정도 누릅니다. (저의 경우에는 shift 가 아닌 esc 였습니다.) 연타를 하면 다음화면을 그냥 지나가서
다음의 bash 로 넘어갑니다.
GRUB>
GRUB>
GRUB>
아무튼 위의 화면에서 'e' 를 누릅니다.
그 후 'intrd' 위의 'linux' 라인에서 'ro' 뒷쪽을 모두 지우고 'rw init=/bin/bash' 바꿔줍니다.
'ctrl + x' 로 재부팅을 시켜줍니다. 그럼 다음과 같은 화면이 나옵니다.
이제 드디어 root@ 계정으로 접속이 되고 'passwd' 로 root 계정의 비밀번호를 바꿀 수 있었습니다.
이후 'reboot -f' 로 다시 재부팅 해 줍니다.
root 패스워드 초기화는 다음 블로그를 참조하였습니다,
네 이제 su - 를 이용해서 root 로 들어가서 떨리는 마음으로 다음을 입력합니다.
pkexec visudo
오예 드디어 들어가지고 변경 할 수 있습니다. 아래 그림과 같이 sudo 부분의 %를 없애주고 바로 아래에 sudo를 사용할 'user ALL=(ALL:ALL) ALL' 를 추가해 주시면 됩니다.
네 다시 su - (user) 로 돌아와서 sudo를 사용하는데, 되는것 같은데 다음과 같은 line이 계속 뜹니다.
sudo: /etc/sudoers is owned by uid 1000, should be 0
이를 없애기 위해 마지막으로 root 계정으로 다시 돌아가 다음을 입력하였습니다.
pkexec chown root:root /etc/sudoers /etc/sudoers.d -R
드디어 sudo 가 잘 작동이 됩니다. 👏👏👏👏👏👏
네 이번에는 sudo 명령어가 먹지 않는 부분을 해결해 보았는데요. 중간에 사실 리눅스를 다시 깔아야 하나 라는 생각이 들었지만 다행히 해결 할 수 있었습니다. 댓글과 질문은 항상 환영합니다. 감사합니다. 😎😎😎😎😎
Referenece
댓글