Compartilhar via


As permissões herdadas não são atualizadas automaticamente quando você move pastas

Este artigo fornece uma solução para um problema em que as permissões herdadas não são atualizadas automaticamente quando você move pastas.

Número original do KB: 320246

Sintomas

Uma ACL (Lista de Controle de Acesso) pode mostrar permissões marcadas como herdadas do pai, mas o próprio pai pode não ter essas permissões configuradas em sua ACL. Esse sintoma pode ocorrer mesmo que a herança ainda esteja habilitada. Qualquer alteração subsequente na ACL da pasta pai faz com que a ACL do filho receba as permissões herdadas. Além disso, qualquer tentativa de alterar a ACL do filho faz com que a herança seja aplicada (a menos que a alteração marque a ACL como protegida contra herança). Esse comportamento pode ser surpreendente se o estado de herança não tiver sido anotado antes de você começar a editar a ACL.

Observação

Esse comportamento não pode ser causado pela movimentação de uma pasta quando você está executando um computador baseado no Windows Vista. A operação de movimentação agora funciona porque a pasta ou o arquivo pode herdar a ACL da pasta ou arquivo de destino. A pasta ou arquivo também tem permissões marcadas como herdadas do pai. Essa é uma alteração por design do Windows XP para o Windows Vista e o Windows Server 2008.

Motivo

Esse comportamento pode ser causado pela movimentação de uma pasta. Quando você move uma pasta, a ACL não é alterada e as permissões herdadas não são atualizadas. Observe que mover no contexto deste artigo sempre significa mover dentro do mesmo volume.

Quando você move um arquivo ou pasta, a ACL também é movida e não é alterada de forma alguma. Mesmo quando a herança está habilitada para essa pasta, as permissões herdadas não são atualizadas automaticamente. A ACL será atualizada na próxima vez que você alterar as permissões, e isso força o pai a propagar suas permissões.

Esse comportamento também pode ser causado por:

  • Definir as permissões de uma pasta pai usando CACLS não se propaga para as subpastas. A opção /T não significa propagar os direitos usando herança, mas substituir todas as ACLs.

  • Definir as permissões de uma pasta pai usando uma API que não propaga automaticamente a herança (como Adssecurity.dll).

  • Restaurando de um backup para um local diferente.

Resolução

Para evitar alterações inesperadas de permissão, defina a ACL do arquivo/pasta como protegida antes de mover quando quiser manter as configurações. Caso contrário, atualize manualmente a ACL do arquivo/pasta movido usando o editor de ACL do explorer. Desative e habilite a herança novamente para forçar a atualização da ACL com as permissões herdadas corretas. Você também pode usar um VBScript para automatizar esse processo.

Status

Este comportamento ocorre por design. Esse comportamento não ocorre devido à modificação do design no Windows Vista.

Etapas para reproduzir o comportamento

  1. Crie uma pasta test1 com as permissões everyone:read e users:change .
  2. Crie uma subpasta test1\sub e habilite a herança do pai (padrão). Esta pasta deve mostrar everyone:read e users:change como permissões herdadas.
  3. Crie outra pasta test2 apenas com administradores:permissões de controle total.
  4. Mova a subpasta para test2.
  5. Visualize as permissões em test2\sub para ver everyone:read e users:change como permissões herdadas, embora a permissão dos pais seja administrators:controle total.
  6. Adicione outro grupo/usuário (como convidado) à ACL de subconcessão, por exemplo, acesso de leitura usando o editor de ACL do explorer. Depois de clicar em Aplicar, todos:ler e usuários:alterar são removidos e somente administradores:controle total são exibidos como permissões herdadas ao lado da que você acabou de adicionar.