快速修复
# 一键:给导入的发行版指定默认用户(改完必须重启发行版才生效)
echo -e "[user]\ndefault=你的用户名" >> /etc/wsl.conf
然后在 Windows 侧终止该发行版并重进:
wsl --terminate <发行版名>
wsl -d <发行版名>
你会遇到什么
wsl --export 备份、wsl --import 迁移/重装发行版之后,一进 WSL whoami 变成了 root:家目录、ssh 密钥、文件属主全乱套。更迷惑的是跑 <发行版> config --default-user 你的用户名 报错或不生效——导入的发行版没有可执行启动器,那条命令对它们无效。
本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。
为什么会这样
WSL 发行版的启动用户由两个来源决定:Store 版发行版的启动器默认用户(<发行版> config --default-user 改的就是它),以及 /etc/wsl.conf 的 [user] default=。
wsl --import 导入的发行版没有可执行启动器,所以 config --default-user 对它们不生效——官方文档明确说了这一点,唯一途径是 wsl.conf。
export 生成的 tar 会原样保留发行版里的 /etc/wsl.conf:如果原发行版从来没写过 [user] default=,导入后就没有任何配置指定普通用户,WSL 按默认值以 root 启动。这解释了「迁移前好好的、迁移后变 root」:问题不在迁移,而在原配置本来就缺 [user] 段。
确定性推论:导入后 whoami = root,先 cat /etc/wsl.conf 看有没有 [user] 段——没有就直接补上再重启发行版;config --default-user 只对 Store 安装的发行版有效,导入版用它白折腾。
一步步来
1. 确认现状 — 必做
whoami # root = 缺 [user] 配置
cat /etc/wsl.conf
2. 写入 [user] 段 — 必做
# 用户名必须已存在(useradd 建过或用过的)
echo -e "[user]\ndefault=你的用户名" >> /etc/wsl.conf
已有 [user] 段就只改 default= 那一行,别重复追加段头。
3. 重启发行版生效 — 必做
# Windows 侧执行(不是 WSL 里)
wsl --terminate <发行版名>
wsl -d <发行版名>
wsl.conf 只在发行版启动时读取,不重启不生效。
4. Store 版发行版(非导入) — 按场景
普通安装的 Ubuntu 想改默认用户,二选一:ubuntu config --default-user 用户名(PowerShell/CMD)或同样写 wsl.conf。
怎么确认修好了
重进后 whoami 输出目标用户名;wsl --user root 仍可临时切 root(--user 是单次覆盖,不影响默认);家目录/ssh 权限恢复正常。
其它环境的表现
| 环境 | 说明 |
|---|---|
| 导入的发行版(wsl --import) | config --default-user 无效,只能 wsl.conf(官方文档明确) |
| Store 安装的发行版 | ubuntu config --default-user <用户> 有效 |
| 单次切换 | wsl -d <发行版> -u <用户> 只对本次有效 |
症状
$ whoami
root
$ ubuntu config --default-user myuser # 导入版:报错或不生效
特征:迁移/导入前是普通用户、导入后变 root;/etc/wsl.conf 没有 [user] 段;config --default-user 对导入版无效。
原因
WSL 启动用户由启动器默认用户或 /etc/wsl.conf [user] default= 决定。wsl --import 导入的发行版没有可执行启动器,config --default-user 不生效;export 保留原 wsl.conf,原配置缺 [user] 段时导入后默认 root。
解法
whoami+cat /etc/wsl.conf确认缺[user]段;echo -e "[user]\ndefault=你的用户名" >> /etc/wsl.conf(用户名须已存在);- Windows 侧
wsl --terminate <发行版名>重启发行版; - 重进验证
whoami。
验证证据
- 机制核对:微软官方文档(basic-commands 的 config --default-user 警告 + wsl-config 的 [user] default=);
- 本机对照(2026-08-31):定制预构建版
whoami= root 且/etc/wsl.conf无[user]段,与机制结论一致;未修改配置复现故障(避免影响工作环境); - 实测复现日志(2026-08-31)
相关 canonical
按「前置 → 同根 / 同域 / 相关」读:
- 相关(报错相近,根因不同):
- WSL 注册发行版失败错误码族(同一域:WSL 发行版生命周期问题)
- WSL systemd 起不来(wsl.conf 的另一常见坑:改完不重启不生效)
适用工具 (1)
本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。
wsl · 外部工具来源与证据
← 编码代理与终端 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡