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

添加metadata、umask=022及fmask=111挂载选项后WSL无法运行EXE文件的求助

添加metadata、umask=022及fmask=111挂载选项后WSL无法运行EXE文件的求助

嘿,我一眼就看出问题出在你设置的fmask=111上——这个挂载选项直接剥夺了所有文件的执行权限,而WSL调用Windows EXE文件(比如reg.exe、powershell.exe这些)的时候,恰恰需要保留它们的执行位才能正常运行。

问题根源拆解

umask和fmask是用来控制挂载文件系统时默认权限的掩码:

  • fmask=111是针对文件的权限掩码,八进制的111对应清除所有用户、组、其他角色的执行权限位
  • 虽然你可以给部分自己的EXE文件手动chmod +x添加执行权限,但/mnt/c下的Windows系统自带EXE是挂载的NTFS分区,挂载时的fmask设置会直接覆盖权限,你没法通过chmod修改这些系统文件的权限,所以才会出现有的能跑、有的完全没法执行的情况。

通用解决方案

  1. 修改WSL挂载配置
    打开WSL的配置文件(如果没有就新建一个):

    sudo nano /etc/wsl.conf
    

    找到[automount]下的options行,把fmask=111去掉,修改后应该类似这样:

    [automount]
    options = "metadata,umask=022"
    

    如果你确实需要保留fmask来控制文件权限,那把它改成不影响执行位的值,比如fmask=011(只清除其他用户的执行权限,保留自己和组的),不过一般来说移除fmask=111就能解决问题。

  2. 重启WSL让配置生效
    切换到Windows的命令提示符或PowerShell,运行:

    wsl --shutdown
    

    然后重新打开WSL终端,再测试运行wslview https://www.google.com或者直接调用/mnt/c/Windows/System32/reg.exe,应该就能正常执行了。

这样调整后,Windows分区下的EXE文件会恢复默认的可执行权限,同时umask=022还能保证挂载的文件拥有合理的读写权限,完美兼顾你的需求~

备注:内容来源于stack exchange,提问作者user1016976

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 09:18:21