作为StackOverflow 上一个问题提到,是否可以在 WSL 程序上使用任何常规恢复工具(从 USB 实时启动、grub 命令行等),如果可以,如何使用?
例如,如果某人意外修改了sudo
权限,无法再使用 sudo,否则会收到“/etc/sudoers 是所有人可写的”错误。在这种情况下,如何恢复权限/etc/sudoers
,因为此chmod
命令本身需要sudo
,因此通常需要进行实时启动才能更改文件权限?
更新:出于我自己的“概念验证”目的,我最初尝试从完全独立的 Ubuntu 计算机挂载我的 Windows 驱动器(带有 WSL),看看是否可以从那里更改 sudoers 文件权限。
虽然我似乎能够从 Ubuntu 更改权限,但一旦我回到 Windows 和 WSL,sudoers 文件就会显示为已损坏(垃圾ls -lah
数据)。我使用了@user1686 在评论中和@NotTheDr01ds 在回答中以 root 身份访问 WSL,然后创建具有正确权限的新 sudoers 文件。
答案1
给定您的“例如”,WSL 允许您轻松地wsl -u root
从 PowerShell 或 CMD 以 root 身份(无需密码)启动默认实例,或者,如果它不是默认实例,则wsl -d <DistroName> -u root
启动。然后,您visudo
无需输入 sudo 密码即可运行。
WSL 还允许使用 来“备份”整个文件系统wsl --export <DistroName> <filename.tar>
。这很可能是使用 Windows 任务管理器中的脚本自动创建备份计划。然后,恢复将是使用 恢复到最新状态的问题wsl --import
(wsl --help
有关详细信息,请参阅)。请注意,导入的实例不存储默认用户名,因此您还需要创建/etc/wsl.conf
一个用户部分。