当我尝试让 docker 在我的机器上运行时,我天真地用 sudo 运行了一些命令。现在,当我尝试 sudo 时,我收到此错误:
dorsatum is not in the sudoers file. This incident will be reported.
id 的输出是:gid=1000(dorsatum) groups=1000(dorsatum),999(docker)
组的输出为:dorsatum docker
我尝试通过 grub 编辑它,但没有成功。通过在恢复模式 shell 中转到 root shell,解决了许多问题。系统要求我输入维护密码,才不是接受我的常规密码,这ctrl+d是唯一可行的选择。
答案1
这有点麻烦,但过去我这样做过,而且还有重置 root 密码的额外好处。我不是用 Ubuntu 系统这样做的,但原理是一样的。
从实时 CD 启动,我认为这将安装您现有的 Linux 分区。如果没有,您需要手动安装它们。
从 shell
$ cp /PathToRootOfMountedDrive/etc/shadow /PathToRootOfMountedDrive/etc/shadow.bak
$ nano /PathToRootOfMountedDrive/etc/shadow
会有这样一行:
root:The Hashed Root Password:15841:0:99999:7:::
我们关心的是散列的 root 密码。如果您将其替换为星号 (*) 并保存,您应该能够重新启动安装并以 root 身份登录而无需密码。修改后的行应如下所示:
root:*:15841:0:99999:7:::
然后,你可以将自己添加回 sudoers 文件,不用$ useradd dorsatum sudo
说,完成后你应该设置一个 root 密码!
/etc/shadow 有一个很好的解释这里
答案2
您需要再次从安装介质启动才能修复此问题。您需要获得包含 Ubuntu 安装的分区的 root 写访问权限,因此请从安装介质(CD 或 USB)启动并临时挂载您的 ubuntu 分区。
$ sudo bash
# mkdir /mnt/ubuntu-main
# mount /dev/sda1 /mnt/ubuntu-main
当然,用你的 Ubuntu 安装的根分区替换 /dev/sda1。
# nano /mnt/ubuntu-main/etc/group
找到包含该组的行sudo
(在我的系统上它显示sudo:x:27:<username>
)并确保您的用户名 dorsatum 列在它旁边。
最后,卸载驱动器并重新启动进入 Ubuntu。您的用户现在应该再次成为 sudo 组的一部分。