You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何WSL2搭配Ubuntu 18.04镜像时未创建/run/user/${uid}目录,如何修复?

问题产生原因
  • /run/user/[UID] 目录是由 pam_systemd 模块在用户交互式登录时自动创建的,用于存放当前用户的运行时数据,默认权限为700,仅对应当前用户可访问。
  • WSL2 环境默认关闭 systemd 支持,Ubuntu 18.04 镜像出厂默认也未配置相关自动创建规则,因此默认不会生成该目录。
  • 若使用非登录式shell启动WSL(比如直接执行wsl命令调用单条指令),即使配置了部分会话规则,也不会触发PAM模块的目录创建逻辑。
可行修复方案

临时修复(重启WSL后失效)

直接执行以下命令手动创建目录,适合临时测试、单次使用的场景:
sudo mkdir -p /run/user/1000 && sudo chown 1000:1000 /run/user/1000 && sudo chmod 700 /run/user/1000

永久修复方案1:启用systemd(推荐)

WSL 0.67.6及以上版本原生支持systemd启用,操作步骤如下:

  1. 编辑WSL配置文件 /etc/wsl.conf,添加如下内容:
[boot]
systemd=true
  1. 保存文件后退出WSL,在Windows PowerShell中执行命令关闭WSL实例:
    wsl --shutdown
  2. 重新启动WSL后,系统会自动生成对应UID的/run/user/1000目录,无需额外操作。

永久修复方案2:不启用systemd的替代方案

如果不需要使用systemd,可以通过shell启动脚本自动创建目录:

  1. 编辑当前用户的shell配置文件(bash用户编辑~/.bashrc,zsh用户编辑~/.zshrc),添加如下内容:
if [ ! -d "/run/user/$UID" ]; then
  sudo mkdir -p "/run/user/$UID"
  sudo chown "$UID:$UID" "/run/user/$UID"
  sudo chmod 700 "/run/user/$UID"
fi
  1. 配置sudo免密执行对应操作,避免每次启动shell都需要输入密码:执行sudo visudo,在文件末尾添加如下规则:
%sudo ALL=(ALL) NOPASSWD: /bin/mkdir -p /run/user/*, /bin/chown *:* /run/user/*, /bin/chmod 700 /run/user/*
  1. 保存退出后重启WSL即可生效。

内容的提问来源于stack exchange,提问作者Vadim Prudnikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 09:36:03