Alterar permissões com chmod não surte efeito no Windows WSL. Teste e solução.

Ambiente de teste

  • Windows 10 Pro Versão 10.0.18363 Compilação 18363
  • WSL 1
  • Linux: Ubuntu 18.04.2 LTS (Bionic Beaver)

Simulando o problema

cd /tmp/
echo "teste" > teste.txt
ls -la
# Observar as permissões do arquivo

Tentar mudar a permissão do arquivo

chmod 600 teste.txt
ls -la

Aqui provavelmente você verá que as permissões do arquivo não mudaram. Se mudaram, acho que você não precisa continuar.

NOTA: antes de irmos para a solução vamos guardar o output do comando: mount -l > /tmp/mount-antes.txt

Solução

Dentro do WSL Linux, no caso um WSL Ubuntu, editar/criar o arquivo /etc/wsl.conf com o conteúdo

[automount]
options = "metadata"

Fechar o WSL completamente:

  • Sair de todas as instâncias do WSL (exit em todos os terminais)
  • Abrir o power shell
    • Obter o nome da instância WSL que foi alterada: wsl --list
    • O output do comando pode ser algo parecido com:

      Distribuições do Subsistema do Windows para Linux:
      Ubuntu (Padrão)
      
    • Desligar a instância pelo nome: wsl -t Ubuntu

Verificando se tudo ok

  • Abrir o WSL (no caso um WSL Ubuntu)
  • Executar o chmod no arquivo e verificar se as permissões mudaram

Se mudaram tudo ok! ;)

NOTA: vamos gerar um novo output do mount: mount -l > /tmp/mount-depois.txt. Você teve ter um diff parecido com o diff abaixo. Observar o atributo metadata na diferença.

Diff

Referências