Em várias estações de trabalho de desenvolvedores, recebemos o temido "Esta lista de controle de acesso não está em formato canônico e, portanto, não pode ser modificada". erro quando tentamos definir permissões em determinadas pastas. Não conseguimos descobrir o que está corrompendo essas ACLs.
No momento, a única maneira de corrigir isso é clicar com o botão direito do mouse na pasta / arquivo corrompido, escolher Propriedades e clicar na guia Segurança. O Windows notará a corrupção e oferecerá corrigi-la. Não gosto disso porque é manual e requer que o usuário faça algumas investigações para descobrir qual pasta / arquivo está corrompido.
Existe um script ou programa em algum lugar que fará isso automaticamente? Vejo que icacls
tem um /verify
parâmetro, mas apenas me mostra que as ACLs em um arquivo / pasta estão corrompidas. Não oferece para consertar nada.
fonte
get-acl path_to_corrupt_file | set-acl -path ptah_to_corrupt_file
.Finalmente, consegui descobrir uma correção automatizada para isso. Quando você chama o
Set-Acl
cmdlet do PowerShell , ele solicita novamente as ACLs corretamente:Obviamente, ele pode ser o pai do diretório que está bagunçado; portanto, você deve percorrer algumas etapas para encontrar o culpado. Use
icacls C:\Path\To\Item\With\Suspect\CL /verify
para descobrir se algo precisa de reparo.Em nosso ambiente, Cygwin é o provável culpado: quando cria diretórios, ele gosta de conceder permissões no estilo POSIX, em vez de confiar no Windows para gerenciar a segurança do sistema de arquivos.
fonte
Para mim, houve um duplo problema: regra errônea ACL + não-canônica declarada para NULL SID (WTH?). Eu sugiro que foi causado pela versão cygwin do git.
De qualquer forma, no meu caso, reaplicar a mesma ACL não fazia nenhum sentido:
Então, eu tive que aplicar explicitamente a ACL do arquivo com a correta, como mencionado por @mschneider
fonte
O icacls também pode corrigi-lo:
Outros comandos úteis, equivalentes ao chmod 0777 FILE, raiz do chown FILE
fonte
Esse problema aparece ao usar o Cygwin. Ele tenta emular as permissões de arquivo POSIX sobre as ACLs do Windows. Isso geralmente leva a ACLs não canônicas, que são legais, mas não podem ser tratadas adequadamente pelo explorer.exe .
Você pode desativar esta emulação problemática montando com a opção "noacl", por exemplo
/etc/fstab
:fonte
fonte