关于 WSL2 的一些知识杂记
1.WSL2 的 /etc/sudoers 文件改错后:/etc/sudoers: syntax error near line 27
我的 WSL2 安装的是 Ubuntu,在不小心 sudo vi /etc/sudoers 之后,添加了错误的内容,这时候再 sudo 就报错了:
$ sudo
/etc/sudoers: syntax error near line 30 <<<
sudo: parse error in /etc/sudoers near line 30
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
似乎陷入了一个死循环,因为你要有 root 权限才能改正 /etc/sudoers 文件,而你又无法 sudo 成 root。
在正常的 Linux 系统,这种情况可以想办法进入单用户模式。对 WSL2,我们可以利用 Windows 的 PowerShell 来做到这一点。
关掉 WSL2 的命令行窗口,用管理员身份打开 PowerShell,然后运行:
PS C:\Windows\system32> ubuntu.exe config --default-user root
然后再打开 WSL2 窗口,这时你就已经是 root 用户了。修改好 /etc/sudoer 文件后,我们再次在 PowerShell 里运行:
PS C:\Windows\system32> ubuntu.exe config --default-user tattoo
然后再打开 WSL2 窗口,就恢复成普通用户了。
转自:【CSDN】 侵删
2.sudo 不需要输入密码
sudo vi /etc/sudoers
将 %admin ALL=(ALL) ALL 修改为 %admin ALL=(ALL) NOPASSWD: ALL
意思是属于 admin 组的用户可以不需要输入密码执行 sudo
如果去除%,则仅仅表示 admin 这个用户不需要输入密码
为某个用户设置可设置为
username ALL=(ALL) NOPASSWD: ALL
此文档为系统文档,如果修改错误,将会提示 »> /etc/sudoers: syntax error near line 23 的错误,此时 sudo 命令将无法使用,自然无法使用上述命令;
此时可进入/etc 目录,用 pkexec visudo 命令,编辑此文件,然后修改。注意:^X 表示 ctrl+X
转自:【博客园】 侵删
3.服务自启动配置
由于 WSL 并没有 Linux 内核的支持,仅在用户层实现了系统调用的翻译。因此诸如 systemd、cgroup 是无法工作的。 只能使用 start-stop-daemon 或其他进程守护工具实现服务管理
编辑 vim /etc/init.wsl 文件添加如下内容
#! /bin/sh
# Filename: /etc/init.wsl
service nginx start
- 开始 -> 运行 中输入 regedit 回车打开注册表编辑器
定位到 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 后新建一个 REG_SZ 类型的值,名称随意,数值数据填写以下内容
mshta vbscript:CreateObject("WScript.Shell").Run("wsl -d Ubuntu-20.04 -u root bash /etc/init.wsl",0,TRUE)(window.close)
以后就可以向 /etc/init.wsl 追加服务,实现开启自启动了;
转自:【知乎】 侵删