误删了 sudoers, 怎么办?
文章目录
昨天在一知半解中, 不小心把 sudoers 删掉了. 后来追溯一下, 发现可能是这一句坏的事儿:
|
|
ChatGPT 是这样解释的:
这个命令很关键,因为它将当前用户的组成员资格设置为了空,这意味着它实际上从所有附加的用户组中删除了用户(除了用户的主组)。在 Linux 中,每个用户都会有一个与其用户名同名的主组,通常用户不会通过 usermod -G 从这个组中被移除。但是,通过将用户从所有其他组中移除,这个命令可能会导致你失去对某些资源的访问权限,特别是那些需要组成员资格的资源,比如使用 sudo 的能力(如果你被移除了 wheel 或相应的 sudo 权限组)。
最简单的办法
用另一个用户名登录, 然后运行命令:
|
|
当然, 这个办法的前提是存在另一个 wheel
的用户. 如果没有第二个这样的用户, 很可能根用户的密码也丢失了, 怎么办?
LiveCD/USB
使用 Live CD 或 USB 启动并修改系统以将用户添加到 wheel
组包含几个步骤。这里假设你已经有一个可启动的 Arch Linux Live CD 或 USB。步骤如下:
-
启动到 Live 环境
- 将 Live CD 或 USB 插入电脑。
- 重启电脑,并在启动时进入 BIOS 或 UEFI 启动菜单。
- 从 Live CD 或 USB 启动。
-
挂载系统分区
- 一旦进入 Live 环境,打开一个终端。
- 使用
lsblk
或fdisk -l
命令查看磁盘分区,找出你的根(/
)分区。假设它是/dev/sda1
(实际上可能不同,根据你的系统情况替换)。
1
lsblk
- 创建一个挂载点并挂载根分区。例如:
1 2
sudo mkdir /mnt/arch sudo mount /dev/sda1 /mnt/arch
- 如果你的
/home
分区是分开的,也需要挂载它(同样替换下面的分区名称):
1
sudo mount /dev/sdaX /mnt/arch/home
-
arch-chroot
进入安装系统- 使用
arch-chroot
命令切换到你的 Arch Linux 安装环境:
1
sudo arch-chroot /mnt/arch
- 这样你就可以像在实际安装的系统中一样执行命令了。
- 使用
-
添加用户到 wheel 组
- 现在你可以将用户添加到
wheel
组了。使用usermod
命令:
1
usermod -aG wheel username
- 将
username
替换为实际的用户名。
- 现在你可以将用户添加到
-
退出并重启
- 退出
chroot
环境:
1
exit
- 卸载所有挂载点:
1
sudo umount -R /mnt/arch
- 重启你的电脑,并拔出 Live CD/USB:
1
sudo reboot
- 退出
启动后,你的用户现在应该已经是 wheel
组的成员了,可以使用 sudo 了。确保 /etc/sudoers
文件或相应的 sudo 配置允许 wheel
组成员使用 sudo。
修改启动参数
如果你在 Arch Linux 上不小心将自己从 sudoers 文件中删除,并且忘记了 root 密码,还有一些方法可以尝试恢复访问权限。以下步骤可以帮助你重置 root 密码,并重新获得 sudo 权限:
-
重新启动并进入 Boot Loader
- 重启你的电脑。
- 当启动到 Boot Loader(比如 GRUB)时,按
E
键来编辑启动参数。
-
修改启动参数以启动到单用户模式
- 找到以
linux
开头的那行,它包含了启动时的内核参数。 - 在行尾添加
init=/bin/bash
,这会在启动时直接进入 bash,而不是正常的启动过程。 - 按
Ctrl + X
或F10
(取决于你的 boot loader)启动系统。
- 找到以
-
重新挂载根分区为可写
- 一旦进入系统,你的根文件系统会以只读模式挂载。你需要重新挂载为可写模式以进行更改:
1
mount -o remount,rw /
- 一旦进入系统,你的根文件系统会以只读模式挂载。你需要重新挂载为可写模式以进行更改:
-
重置 root 密码
- 现在你可以重置 root 密码了:
1
passwd root
- 按照提示输入新的 root 密码两次。
- 现在你可以重置 root 密码了:
-
重新启动
- 输入
exec /sbin/init
或者重启电脑以正常方式启动 Arch Linux。 - 现在你应该能够使用新设置的 root 密码登录了。
- 输入
-
恢复 sudo 权限
- 一旦你以 root 用户登录,你可以编辑
/etc/sudoers
文件来恢复你的 sudo 权限,或者直接给你的用户添加到 wheel 组(如果之前配置了 wheel 组可以使用 sudo):1
usermod -aG wheel your_username
- 确保
/etc/sudoers
文件中有类似这样的行,允许 wheel 组的成员使用 sudo:1
%wheel ALL=(ALL) ALL
- 一旦你以 root 用户登录,你可以编辑
请在执行这些步骤时小心谨慎,尤其是在编辑 boot loader 和重置密码时。这些步骤涉及系统的底层操作,有可能会导致系统不稳定或数据丢失,如果你对任何步骤不确定,最好寻求有经验人士的帮助。