Cod*_*uru 11 ubuntu sudo group
在 Ubuntu 20.04 上设置 docker 时,我做了sudo usermod -G docker $USER. 正如这里的相关问题所述,我错过了-a标志并替换了所有次要组。但是,直到我重新启动机器后,我才意识到这一点。这是一个单用户工作站。我可以用 解决这个问题root,但我没有密码。如何在没有 root 访问权限的情况下恢复正确的组?现在唯一导致问题的是sudo,但我相信其他人会突然出现。我可以在不从头开始重新安装 Ubuntu 的情况下做任何事情吗?
A.B*_*A.B 30
您还剩下一组: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
Run Code Online (Sandbox Code Playgroud)
以交互方式并在特权模式下使用此图像运行容器(以防 AppArmorchroot稍后在没有它的情况下阻止命令):
$ docker run -it --mount type=bind,source=/,target=/host --privileged busybox
Run Code Online (Sandbox Code Playgroud)
继续使用容器中的交互式命令。您可以简单地 chroot 到挂载点以“进入”根文件系统并获取所有 Ubuntu 命令:
/ # chroot /host
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
注销并重新登录,或手动更改组:
myuser@myhost$ sg sudo
Run Code Online (Sandbox Code Playgroud)
并恢复 root 访问:
myuser@myhost$ sudo -i
[sudo] password for myuser:
root@myhost#
Run Code Online (Sandbox Code Playgroud)
结论:在允许远程访问 Docker(通过端口 2375/TCP)时要非常谨慎。这意味着默认情况下具有 root 访问权限。
我可以在不从头开始重新安装 Ubuntu 的情况下做任何事情吗?
除了在另一个答案中给出的特定于 docker 的方法之外,如果您有物理访问权限并且没有适当的对策*,那么如果您准备重新启动系统,您几乎总是可以进入系统。
有几种常用的方法。
一种是使用 livecd 并挂载文件系统。
另一个是使用“init=/bin/sh”技巧,当你得到 grub 菜单时,选择你的引导选项,而不是按 Enter,而是按“e”,然后将“init=/bin/sh”添加到内核中命令行。这应该会让您在启动过程的早期进入 shell。根文件系统此时可能仍处于只读状态,因此请mount -o remount,rw /使其可写。然后,您应该能够使用 设置root 密码passwd root或将用户添加到 sudo 组adduser myuser sudo。完成编辑后,您可以exec init照常继续启动过程。
* bios/bootloader 密码是一种,某些类型的磁盘加密可能是另一种。
| 归档时间: |
|
| 查看次数: |
984 次 |
| 最近记录: |