Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta página detalha como as permissões de arquivo do Linux são interpretadas no Subsistema do 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 do WSL, as permissões de arquivo são calculadas a partir de permissões do Windows ou são lidas de metadados que foram adicionados ao arquivo pelo WSL. Esses metadados não estão habilitados por padrão.
Metadados do 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.
O WSL pode adicionar quatro atributos estendidos do 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 de permissão e tipo 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 regular ou diretório (por exemplo: links simbólicos, FIFOs, dispositivos de bloco, sockets Unix e dispositivos de caractere) também tem um ponto de nova análise NTFS. Isso torna muito mais rápido determinar o tipo de arquivo em um determinado diretório sem precisar consultar seus atributos estendidos.
Cenários de acesso a arquivos
Veja abaixo uma descrição de como as permissões são determinadas ao acessar arquivos de diferentes maneiras usando o Subsistema do Windows para Linux.
Acessando arquivos no DrvFS (sistema de arquivos de unidade do Windows) do Linux
Esses cenários ocorrem quando você está acessando seus arquivos do Windows do WSL, provavelmente por meio de /mnt/c.
Lendo permissões de arquivo de um arquivo do Windows existente
O resultado depende se o arquivo já tiver 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 os definiremos 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 ao arquivo, mas não acesso de gravação, isso será exibido como r-x para usuário, grupo e outros. Se o arquivo tiver o atributo 'Somente Leitura' definido no Windows, não concederemos acesso de gravação no Linux.
O arquivo tem metadados
Se o arquivo tiver metadados presentes, simplesmente usaremos esses valores de metadados em vez de traduzir permissões efetivas do usuário do Windows.
Alterando permissões de arquivo em um arquivo do Windows existente usando chmod
O resultado depende se o arquivo já tiver metadados existentes.
O arquivo chmod não tem metadados (padrão)
O Chmod terá apenas um efeito, se você remover todos os atributos de gravação de um arquivo, o atributo "somente leitura" no arquivo do Windows será definido, pois esse é o mesmo comportamento que CIFS (Common Internet File System) que é o cliente SMB (Bloco de Mensagens do Servidor) no Linux.
O arquivo chmod tem metadados
O Chmod alterará ou adicionará metadados dependendo dos metadados já existentes do arquivo.
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 diga que esse é o caso. Por exemplo, você pode definir os metadados para exibir que tem permissões de gravação em um arquivo usando chmod 777, mas se você tentasse acessar esse arquivo, ainda não seria capaz de gravar nele. Isso ocorre graças à interoperabilidade, pois todos os comandos de leitura ou gravação para arquivos do Windows são roteados por meio de suas permissões de usuário do Windows.
Criando um arquivo no DriveFS
O resultado depende se os metadados estiverem 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 habilitados
Os bits de permissão do arquivo são definidos para seguir a umask do Linux e o arquivo será salvo com metadados.
Qual usuário do Linux e grupo do Linux são os proprietários do arquivo?
O resultado depende se o arquivo já tiver metadados existentes.
O arquivo de usuário não tem metadados (padrão)
No cenário padrão, ao montar automaticamente discos do Windows, especificamos que a ID de usuário (UID) para qualquer arquivo é definida como a ID do usuário do WSL e a ID do grupo (GID) está definida como a ID do grupo principal do usuário do WSL.
O arquivo de usuário tem metadados
O UID e o GID especificados nos metadados são aplicados como o proprietário do usuário e o proprietário do grupo do arquivo.
Acessando arquivos linux do Windows usando \\wsl$
Acessar arquivos do Linux via \\wsl$ usará o usuário padrão da sua distribuição WSL. Portanto, qualquer aplicativo do Windows que acesse arquivos 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 a partir do Windows. O umask padrão é 022, ou, em outras palavras, permite todas as permissões, exceto as de gravação para grupos e outros.
Acessando arquivos no sistema de arquivos raiz do Linux
Todos os arquivos criados, modificados ou acessados no sistema de arquivos raiz do Linux seguem convenções padrão do Linux, como aplicar a 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 que você defina as máscaras de permissões umask, dmask e fmask. Ela umask é aplicada a todos os arquivos, ela dmask é aplicada apenas a diretórios e é fmask aplicada apenas aos arquivos. Essas máscaras de permissão são então colocadas em uma operação lógica OR ao serem aplicadas a arquivos, por exemplo: se você tiver um umask valor de 023 e um fmask valor de 022, então, a máscara de permissões resultante para arquivos será 023.
Saiba mais: Opções de configuração de distribuição com wsl.conf.
Windows Subsystem for Linux