Ubuntu
核對次要組後重新獲得 sudo 訪問權限
在 Ubuntu 20.04 上設置 docker 時,我做了
sudo usermod -G docker $USER
. 正如此處相關問題中所述,我錯過了-a
標誌並替換了所有次要組。但是,直到我重新啟動機器後,我才意識到這一點。這是一個單使用者工作站。我可以用 解決這個問題root
,但我沒有密碼。如何在沒有 root 訪問權限的情況下恢復正確的組?現在唯一引起問題的是sudo
,但我相信其他人會出現。我可以在不從頭開始重新安裝 Ubuntu 的情況下做任何事情嗎?
您還剩下一組:
docker
. 這意味著您仍然可以控制 docker 守護程序。這個守護程序可以執行一個安裝了主機根文件系統的容器,然後容器可以編輯文件(vi
在busybox中可用)或更簡單:可以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
以互動方式和特權模式執行帶有此映像的容器(以防 AppArmor
chroot
稍後會在沒有它的情況下阻止該命令):$ docker run -it --mount type=bind,source=/,target=/host --privileged busybox
繼續使用來自容器的互動式命令。您可以簡單地 chroot 到掛載點以“進入”根文件系統並獲取所有 Ubuntu 命令:
/ # chroot /host
使用
adduser
which 是一個更簡單的包裝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訪問。