Partilhar via


Permissões de arquivo para WSL

Esta página detalha como as permissões de arquivo Linux são interpretadas no Subsistema Windows para Linux, especialmente ao acessar recursos dentro do Windows no sistema de arquivos NT. Esta documentação pressupõe uma compreensão básica da estrutura de permissões do sistema de arquivos Linux e do comando umask.

Ao acessar arquivos do Windows a partir da WSL, as permissões de arquivo são calculadas a partir de permissões do Windows ou são lidas a partir de metadados que foram adicionados ao arquivo pela WSL. Esses metadados não estão habilitados por padrão.

Metadados WSL em arquivos do Windows

Quando os metadados são habilitados como uma opção de montagem no WSL, atributos estendidos em arquivos do Windows NT podem ser adicionados e interpretados para fornecer permissões do sistema de arquivos Linux.

A WSL pode adicionar quatro atributos estendidos NTFS:

Nome do atributo Descrição
$LXUID ID do Proprietário do Usuário
$LXGID ID do Proprietário do Grupo
$LXMOD Modo de arquivo (octais e tipo de permissão de sistemas de arquivos, por exemplo: 0777)
$LXDEV Dispositivo, se for um arquivo de dispositivo

Além disso, qualquer arquivo que não seja um arquivo ou diretório regular (por exemplo: links simbólicos, FIFOs, dispositivos de bloco, soquetes unix e dispositivos de caracteres) também tem um ponto de análise NTFS. Isso torna muito mais rápido determinar o tipo de arquivo em um determinado diretório sem ter que consultar seus atributos estendidos.

Cenários de acesso a arquivos

Abaixo está uma descrição de como as permissões são determinadas ao acessar arquivos de diferentes maneiras usando o Subsistema Windows para Linux.

Acessando arquivos no sistema de arquivos de unidade do Windows (DrvFS) a partir do Linux

Esses cenários ocorrem quando você está acessando seus arquivos do Windows a partir do WSL, provavelmente via /mnt/c.

Lendo permissões de arquivo de um arquivo existente do Windows

O resultado depende se o arquivo já tem metadados existentes.

O arquivo DrvFS não tem metadados (padrão)

Se o arquivo não tiver metadados associados a ele, traduziremos as permissões efetivas do usuário do Windows para ler/gravar/executar bits e defini-los como o mesmo valor para usuário, grupo e outros. Por exemplo, se sua conta de usuário do Windows tiver acesso de leitura e execução, mas não acesso de gravação ao arquivo, isso será mostrado como r-x para usuário, grupo e outros. Se o arquivo tiver o atributo 'Somente leitura' definido no Windows, então não concedemos acesso de gravação no Linux.

O ficheiro tem metadados

Se o arquivo tiver metadados presentes, simplesmente usamos esses valores de metadados em vez de traduzir as permissões efetivas do usuário do Windows.

Alterando permissões de arquivo em um arquivo existente do Windows usando chmod

O resultado depende se o arquivo já tem metadados existentes.

O arquivo chmod não tem metadados (padrão)

Chmod terá apenas um efeito, se você remover todos os atributos de gravação de um arquivo, então o atributo 'somente leitura' no arquivo do Windows será definido, uma vez que este é o mesmo comportamento do CIFS (Common Internet File System), que é o cliente SMB (Server Message Block) no Linux.

arquivo chmod tem metadados

O Chmod alterará ou adicionará metadados dependendo dos metadados já existentes do arquivo.

Por favor, tenha em mente que você não pode dar a si mesmo mais acesso do que o que você tem no Windows, mesmo que os metadados digam que é o caso. Por exemplo, você pode definir os metadados para exibir que você tem permissões de gravação para um arquivo usando chmod 777o , mas se tentasse acessar esse arquivo, ainda não conseguiria gravar nele. Isso é graças à interoperabilidade, pois todos os comandos de leitura ou gravação para arquivos do Windows são roteados através de suas permissões de usuário do Windows.

Criando um arquivo no DriveFS

O resultado depende se os metadados estão habilitados.

Os metadados não estão habilitados (padrão)

As permissões do Windows do arquivo recém-criado serão as mesmas que se você criou o arquivo no Windows sem um descritor de segurança específico, ele herdará as permissões do pai.

Os metadados estão ativados

Os bits de permissão do ficheiro são definidos para seguir o umask do Linux, e o ficheiro será salvo com metadados.

Qual usuário Linux e grupo Linux possui o arquivo?

O resultado depende se o arquivo já tem metadados existentes.

O arquivo do usuário não tem metadados (padrão)

No cenário padrão, ao montar automaticamente unidades do Windows, especificamos que o ID de usuário (UID) de qualquer arquivo seja definido como o ID de usuário do usuário WSL e o ID de grupo (GID) seja definido como o ID de grupo principal do usuário WSL.

O arquivo do usuário tem metadados

O UID e o GID especificados nos metadados são aplicados como o usuário proprietário e o grupo proprietário do arquivo.

Acessando arquivos do Linux a partir do Windows usando \\wsl$

Acessar arquivos Linux via \\wsl$ usará o usuário padrão de sua distribuição WSL. Portanto, qualquer aplicativo do Windows que acesse arquivos do Linux terá as mesmas permissões que o usuário padrão.

Criando um novo arquivo

O umask padrão é aplicado ao criar um novo arquivo dentro de uma distribuição WSL do Windows. O umask padrão é 022, em outras palavras, permite todas as permissões, exceto permissões de gravação para grupos e outros.

Acessando arquivos no sistema de arquivos raiz Linux a partir do Linux

Todos os arquivos criados, modificados ou acessados no sistema de arquivos raiz do Linux seguem as convenções padrão do Linux, como aplicar o umask a um arquivo recém-criado.

Configurando permissões de arquivo

Você pode configurar suas permissões de arquivo dentro de suas unidades do Windows usando as opções de montagem em wsl.conf. As opções de montagem permitem definir máscaras de permissões umask, dmask e fmask. O umask é aplicado a todos os arquivos, o dmask é aplicado apenas a diretórios e o fmask é aplicado apenas a arquivos. Essas máscaras de permissão são então colocadas através de uma operação lógica OU ao serem aplicadas a arquivos, por exemplo: Se você tiver um umask valor de e um 023 valor de, a máscara de fmask022 permissões resultante para arquivos será 023.

Saiba mais: Por opções de configuração de distribuição com wsl.conf.