chmod WSL(Bash)不起作用

joe*_*oe5 19 bash chmod windows-10 windows-subsystem-for-linux

在Windows 10上运行bash时,下面的简单语法在我通过SSH连接到我的网络服务器时起作用,但是当我退出并在我的本地机器上时则不行.它没有给我一个错误,但我可以看到权限不变.我必须检查我是否在计算机上设置为管理员.这是一个错误还是仅仅是本地操作系统是Windows的结果?如果是后者,它会让我质疑在Windows上使用bash的价值,如果这样的常见操作不起作用.

$chmod 644 filename 
Run Code Online (Sandbox Code Playgroud)

Cha*_*hao 26

Amade的答案是正确的,但请注意,cmd仅在会话范围内生效.如果退出当前bash,您将丢失设置.

要解决此问题,您需要编辑/etc/wsl.conf.并在下面配置.

[automount]
enabled = true
options = "metadata"
Run Code Online (Sandbox Code Playgroud)

参考:

自动配置WSL

Chmod/Chown WSL改进

  • 需要运行“wsl --shutdown” (8认同)
  • 文件`/etc/wsl.conf`不存在,所以我创建了它,重启后它就工作了。谢谢! (7认同)
  • 保存“/etc/wsl.conf”后,我必须重新启动计算机才能使更改生效。 (5认同)
  • “启用”是多余的。默认情况下,此选项为“ true” (2认同)
  • 感谢@alex 和@HA3IK;已将此基本上下文编辑到答案中。 (2认同)

Ama*_*ade 15

WSL最近有一个更新(),它使您可以更改文件的权限(Insider Build 17063)。

您要做的就是运行:

sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata
Run Code Online (Sandbox Code Playgroud)

  • 该解决方案的问题在于它以 root 身份挂载 C 驱动器。要让文件归我而不是 root 拥有,我必须执行 `sudo mount -t drvfs C: /mnt/c -ometadata,gid=1000,uid=1000`。 (2认同)

hko*_*hko 5

阿玛德斯和混沌的答案都是正确的。但它仅适用于本地驱动器,不适用于映射的网络驱动器。Z:是我的网络驱动器之一。同样的操作/mnt/c/Users/xxx/效果很好。

$sudo mount -t drvfs Z: /mnt/z -o metadata
$touch test
$chmod +w test
 chmod: changing permissions of 'test': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

这是一个已知问题,请参阅drvfs:安装的 SMB 驱动器可能元数据 (chmod\chown) 吗?