如何将自己重新添加为 sudo 用户?

如何将自己重新添加为 sudo 用户?

我今天全新安装了 Ubuntu 11.10,然后安装了 VirtualBox。这需要我将自己添加到 vboxusers 组,由于 11.10 似乎不再有用于将用户添加到组的图形应用程序,因此我运行了以下命令:

sudo usermod -G vboxusers stephane

这是个问题。我现在明白我应该运行的是:

sudo usermod -aG vboxusers stephane

最终结果是我不再属于我应该属于的组。包括运行“sudo”所需的任何组。现在,当我以 sudo 身份运行任何命令时,我都会得到以下信息:

$ sudo ls
[sudo] password for stephane: 
stephane is not in the sudoers file.  This incident will be reported.

有没有办法解决这个问题,还是我需要从头开始重新安装?

答案1

  1. 在启动过程中,按住左边 Shift键,您应该会看到 GRUB 菜单。

  2. 选择包含 (恢复模式)并等待。

  3. 现在您应该会看到一个菜单。选择:

    remount    Remount / read/write and mount all other file systems 
    

    并等待您的文件系统以读/写权限挂载,然后按Enter

    如果此选项未出现或不起作用,您可以选择该root选项并使用以下命令来挂载系统分区:

    mount -o remount /
    

    fsck您可以使用命令或查看来检查您的系统分区/etc/mtab

    成功运行mount命令后(即没有错误信息),直接执行下面的第5步。

  4. 选择remount选项后,菜单再次出现。选择:

    root       Drop to root shell prompt
    
  5. 现在输入以下命令之一将您的用户重新添加到admin组(适用于 Ubuntu 11.10 及更早版本):

    adduser <USERNAME> admin
    

    或者添加到sudo组(适用于 Ubuntu 12.04 及更高版本):

    adduser <USERNAME> sudo
    
  6. 重新启动后您就可以sudo再次使用。

答案2

如果您的系统上启用了 root 登录,只需通过Control++放下终端AltF1而无需登录 X。以 root 身份登录,然后将所需的用户添加到admin组(适用于 Ubuntu 11.10 及更早版本):

adduser desired_user_name admin

对于 Ubuntu 12.04 及更高版本,将用户添加到sudo组:

adduser desired_user_name sudo

如果您没有启用 root 登录,只需从 Grub 选择恢复模式,然后尝试 root shell。

根外壳

将文件系统挂载为读写:

mount -o rw,remount /

此后,您可以再次将所需的用户添加到admin(或sudo)组。

答案3

在执行相同的操作后,我尝试了各种组合,因为重新安装菜单选项似乎不在 12.10 中。我已经从 root 尝试了这篇文章中的所有其他操作。最后一个是

umount -a
mount -o -w /<path> /

这导致文件系统仍然反渗透由于 fstab 中的设置导致启动反渗透我认为是文件系统错误,它表明它似乎是反渗透挂载后。

我终于做到了

mount -o rw,remount /

虽然我不确定这与之前的命令集有何不同。

应用此变体后,将用户添加到admin(11.10 及更早版本)或sudo(12.04 及更高版本)组的方式相同:

adduser username admin    # 11.10 and earlier
adduser username sudo     # 12.04 and later

答案4

我在将我的账户添加到组中时犯了同样的错误(忘记了-a)。我的系统安装时已锁定 root 登录名,我的账户是机器上唯一的账户。

接受的答案对我没有帮助。在启动恢复模式时,我收到的只是一条无用的消息

无法打开控制台访问权限,root 帐户已被锁定。有关更多详细信息,请参阅 sulogin(8) 手册页
按 ENTER 继续

按下 ENTER 后,系统正常启动:无法获得 root 访问权限来修复问题。我留下这个答案,以防有人在这时候遇到我的情况。使用以下仅当您无法通过 Grub 菜单进入恢复模式时

获取 root shell 的步骤:

  1. 启动进入 Grub 菜单,并突出显示(但不要按Enter!)正常(默认,不是恢复!)启动选项。
  2. e。Grub 将显示一个包含多行的命令行编辑器,每行看起来可能都不熟悉,但又不吓人。不用担心,您所做的任何更改都不会永久保存。
  3. 找到 行linux ... ro ...。这是内核命令行。将标记替换rorw,以使根文件系统可读/写,并添加另一个内核命令行参数init=/bin/sh。这指示内核执行sh而不是/sbin/init。最后,该行应如下所示linux ... rw init=/bin/sh ...笔记:即使只有简单的提示,你也可以通过grub>。如果其他方法都失败了,我很乐意一步一步地解释如何操作;只需在这个答案下留言即可。
  4. 更改后,按F10使用编辑器中的命令来启动系统(或者,如果您的 Grub 编译方式不同,请阅读编辑器窗口下方的启动说明)。您将获得 root shell 提示符,因为 init 进程以 root 身份作为 PID 1 运行。
  5. 进行您想要的更改,例如usermod -a -Gadm,sudo YOURUSERID。使用 确认id -a YOURUSERID您已恢复 sudo 会员资格。如果您收到“未找到命令”错误,请使用/sbin/usermod/bin/id
  6. 此时您无法彻底关闭或重新启动系统。reboot或不起作用,并且从 shellhalt执行将导致内核崩溃,因为 PID 1 进程不应直接退出。因此您必须发出的下两个命令是:poweroffexit

    sync
    exec /sbin/init
    

    sync以防万一出现问题,将所有更改保存到磁盘,并exec用真实 shell 替换 shell init(可以是 systemd、upstart 或 System V init,但始终称为/sbin/init)。系统很可能会继续正常启动(无恢复模式)。

  7. 登录并重启系统一次,例如sudo reboot--您应该已经恢复了 sudo 权限。建议重启,因为(虽然很少见)init在正常启动期间可能会传递其他参数,而我们没有这样做。如果exec失败,只需重置机器并让其正常启动。所有现代日志文件系统(如 ext4、xfs 和 btrfs)都可以快速恢复(如果在重置之前进行了日志检查,最多需要几秒钟sync),然后您就万事俱备了。

背景介绍

有一个关于 Debian 错误报告的讨论关于这个问题,据我所知,这被认定为一个功能,而不是一个错误,我认为这是一个错误。在这个行业工作了 25 年,我不得不完全不同意 Michael Biebl 在消息 #31在该主题中:

考虑一下:您有一台锁定了 root 帐户的笔记本电脑。默认情况下,grub 引导加载程序会为救援模式生成一个引导项。因此,即使您锁定 BIOS 以不允许从 CD-Rom 或 USB 启动,并且您用密码保护 grub,如果您将笔记本电脑暂时无人看管,其他人也可以轻松获得 root 访问权限。

我认为,正确的反对意见(如果不够普遍的话)是在消息 #70作者:Felipe Sateler:

对于许多(大多数?)计算机来说,物理访问意味着游戏在安全性方面丢失,因为您只需拆开盒子并取出硬盘即可。

对于 Michael 的论点中提到的笔记本电脑尤其如此:如果你把它放在一边不管,而有人想偷你的数据,那么笔记本电脑就会消失得无影无踪。而对于任何机器,而不是“很多”或“大多数”,即使是那些用 8 个点螺栓固定在机架上的机器,一旦攻击者获得对机器的物理访问权,游戏就真的结束了。

相关内容