所以,我搞乱了 Linux 的 Windows 子系统中的 sudoers 文件。我试图添加一些内容,教程的作者说用 nano/vim 编辑 sudoers 文件,我就是这么做的(后来我发现你只能用 visudo 编辑它,太好了)。当我保存时,我意识到我不能再使用“sudo”了,终端会抱怨说:
>>> /etc/sudoers: syntax error near line 33 <<<
sudo: parse error in /etc/sudoers near line 33
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
我读过很多文章说我必须跑步:
pkexec /usr/sbin/visudo
但结果总是一样的:
Error getting authority: Error initializing authority: Could not connect: No such file or directory
我尝试了所有方法,花了大约两个小时阅读资料,但什么也没做。有人能帮助我吗?正如你所见,在真正的 Linux 方面我显然是个新手。
答案1
我发现了一个针对我的情况的相当简单的解决方案。
只需打开 Windows 控制台(cmd),然后:
wsl -u root visudo
并修复文件。
请注意,visudo
无法捕获所有错误。为避免被锁定,请在彻底测试新配置之前sudo
保持 root shell ( sudo -s
) 或打开。visudo
答案2
由于该命令不起作用,因此wsl -u root visudo
我使用了以下替代方法:
我按照以下说明将默认用户更改为 root这个答案:
ubuntu config --default-user root
然后重新启动LxssManager
服务(从 services.msc)
当我打开 WSL 时,默认以 root 身份连接,并且我可以安全地visudo
从该 WSL 实例执行命令。
我更正了错误的条目并保存了它。
修正后,我的 WSL 启动正常。
为了以防万一,这里是sudoers
我一开始的默认文件:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
%sudo ALL=NOPASSWD: /sbin/start-stop-daemon
%sudo ALL=NOPASSWD: /etc/init.d/ssh
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
一些条目可能已通过“apt install”命令添加。
操作完成后别忘了切换回原用户:
ubuntu1804.exe config --default-user <username>
该命令ubuntu1804.exe
可以适应您的发行版(20.04,其他 Linux 等...)
答案3
关闭 WSL 终端,打开 Windows 命令提示符,并使用以下命令将默认 WSL 用户设为 root
ubuntu2004 config --default-user root
打开一个新的 WSL 终端,您将以 root 身份登录。输入
nano /etc/sudoers
现在您可以编辑 sudoers 文件了。干杯!
额外:ubuntu1804 config --default-user root
适用于 Ubuntu 18.04 及以上版本或ubuntu config --default-user root
以下版本。