Ubuntu

核對次要組後重新獲得 sudo 訪問權限

  • June 18, 2021

在 Ubuntu 20.04 上設置 docker 時,我做了sudo usermod -G docker $USER. 正如此處相關問題中所述,我錯過了-a標誌並替換了所有次要組。但是,直到我重新啟動機器後,我才意識到這一點。這是一個單使用者工作站。我可以用 解決這個問題root,但我沒有密碼。如何在沒有 root 訪問權限的情況下恢復正確的組?現在唯一引起問題的是sudo,但我相信其他人會出現。我可以在不從頭開始重新安裝 Ubuntu 的情況下做任何事情嗎?

您還剩下一組:docker. 這意味著您仍然可以控制 docker 守護程序。這個守護程序可以執行一個安裝了主機根文件系統的容器,然後容器可以編輯文件(vibusybox中可用)或更簡單:可以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

以互動方式和特權模式執行帶有此映像的容器(以防 AppArmorchroot稍後會在沒有它的情況下阻止該命令):

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

繼續使用來自容器的互動式命令。您可以簡單地 chroot 到掛載點以“進入”根文件系統並獲取所有 Ubuntu 命令:

/ # chroot /host

使用adduserwhich 是一個更簡單的包裝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

並恢復了 root 訪問權限:

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

結論:允許遠端訪問 Docker(通過埠 2375/TCP)時要*非常謹慎。*這意味著預設情況下root訪問。

引用自:https://unix.stackexchange.com/questions/654689