보조 그룹을 삭제한 후 sudo 액세스 권한을 다시 얻으세요.

보조 그룹을 삭제한 후 sudo 액세스 권한을 다시 얻으세요.

Ubuntu 20.04에서 docker를 설정할 때 sudo usermod -G docker $USER. 여기 관련 질문에서 언급했듯이 플래그 를 놓치고 -a모든 보조 그룹을 교체했습니다. 그러나 나는 기계를 다시 시작할 때까지 이것을 깨닫지 못했습니다. 이는 단일 사용자 워크스테이션입니다. 로 이 문제를 해결할 수 있지만 root비밀번호가 없습니다. 루트 액세스 없이 올바른 그룹을 복원하려면 어떻게 해야 합니까? 지금 문제를 일으키는 유일한 것은 입니다 sudo. 하지만 다른 문제가 발생할 것이라고 확신합니다. Ubuntu를 처음부터 다시 설치하지 않고 할 수 있는 일이 있나요?

답변1

한 세트 남았습니다: docker. 이는 여전히 docker 데몬을 제어할 수 있음을 의미합니다. 이 데몬은 호스트의 루트 파일 시스템을 사용하여 컨테이너를 실행할 수 있습니다.설치됨그런 다음 컨테이너는 파일을 편집할 수 있습니다 vi(바쁜 상자) 또는 더 간단: chroot호스트의 파일 시스템에 연결할 수 있습니다.

최소 이미지 다운로드 busybox:

myuser@myhost:~$ docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
b71f96345d44: Pull complete 
Digest: sha256:930490f97e5b921535c153e0e7110d251134cc4b72bbb8133c6a5065cc68580d
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest

chroot이 이미지가 포함된 컨테이너를 대화형으로 특권 모드에서 실행합니다(AppArmor가 나중에 이 이미지 없이 명령을 차단하는 경우 ).

$ docker run -it --mount type=bind,source=/,target=/host --privileged busybox

컨테이너 내에서 대화형 명령을 계속 사용하세요. 간단히 마운트 지점으로 chroot하여 루트 파일 시스템에 "입력"하고 모든 Ubuntu 명령을 얻을 수 있습니다.

/ # chroot /host

adduser더 간단한 래퍼를 사용하십시오 useradd.

root@74fc1b7903e5:/# adduser myuser sudo
Adding user `myuser' to group `sudo' ...
Adding user myuser to group sudo
Done.
root@74fc1b7903e5:/# exit
exit
/ # exit

로그아웃했다가 다시 로그인하거나 그룹을 수동으로 변경합니다.

myuser@myhost$ sg sudo

루트 액세스가 복원되었습니다:

myuser@myhost$ sudo -i
[sudo] password for myuser:
root@myhost# 

결론은매우Docker에 대한 원격 액세스를 허용할 때는 주의하십시오(포트 2375/TCP를 통해). 기본적으로 이는 루트 액세스를 의미합니다.

답변2

Ubuntu를 처음부터 다시 설치하지 않고 할 수 있는 일이 있나요?

다른 답변에 제공된 도커별 방법 외에도 물리적 액세스가 있고 대책이 마련되어 있지 않은 경우* 재부팅할 준비가 되어 있으면 거의 항상 시스템에 들어갈 수 있습니다.

몇 가지 일반적인 방법이 있습니다.

하나는 livecd를 사용하고 파일 시스템을 마운트하는 것입니다.

또 다른 방법은 "init=/bin/sh" 트릭을 사용하는 것입니다. grub 메뉴에 들어갈 때 부팅 옵션을 선택하고 Enter 키를 누르는 대신 "e"를 누른 다음 "init=/bin/sh"를 누르는 것입니다. 커널 명령줄. 이렇게 하면 부팅 프로세스 초기에 셸로 들어갈 수 있습니다. 이 시점에서 루트 파일 시스템은 여전히 ​​읽기 전용일 수 있으므로 mount -o remount,rw /쓰기 가능하게 만드십시오. 그런 다음 sudo 그룹을 사용하여 루트 비밀번호를 설정 passwd root하거나 사용자를 sudo 그룹에 추가할 수 있습니다 adduser myuser sudo. 편집을 마치면 exec init정상적으로 시작 프로세스를 계속할 수 있습니다.

* BIOS/부트로더 비밀번호는 하나이고, 일부 디스크 암호화 유형은 또 다른 비밀번호일 수 있습니다.

관련 정보