Como funciona a herança de segurança do sistema de arquivos do Windows?

1

Eu estou mergulhando no poderoso, mas complexo mundo da segurança de arquivos / pastas do Windows. Eu entendo como tudo funciona e posso fazer algumas suposições sobre como o mecanismo ACL / ACE funciona. O que eu não tenho certeza é como o flag / mecanismo de herança é implementado.

Se (digamos) um objeto de pasta tiver o sinalizador de herança definido, faça as alterações no pai:

  1. É copiado para todos os objetos filhos afetados no momento em que a alteração na permissão pai é feita?
  2. O Windows, quando necessário (por exemplo, permissão de verificação), percorre a árvore para determinar a permissão herdada?

Estou suspeitando que é o número 1, como se você alterasse as permissões de segurança na raiz de um sistema de arquivos grande. Demora muito tempo para aplicar as alterações. Eu estou supondo que o Windows está andando por todos os arquivos & pastas, verificando o sinalizador de herança e alterando o ACL / ACE em cada objeto.

Além disso, suponho que seja feito dessa maneira para melhorar o desempenho - continuar subindo em uma estrutura de pastas muito profunda para obter o objeto raiz, já que as permissões herdadas disso imporiam um grande impacto no desempenho.

Felicidades, Rob.

    
por Rob Nicholson 22.07.2010 / 12:24

1 resposta

3

Com base em sua menção de "estrutura de pastas", estou supondo que você esteja falando sobre a herança de permissões NTFS.

A herança de permissões NTFS é, como você supõe, uma ilusão engenhosa que atribui explicitamente ACLs "herdadas" a objetos no momento em que as ACLs "herdáveis" são modificadas ou que um arquivo é criado. Esse comportamento é considerado defeituoso por alguns ( eu incluído). As APIs que o shell chama para alterar a permissão farão com que essa "percorrer" uma hierarquia de pastas profundas ao alterar as permissões na raiz dessa hierarquia. (Esse comportamento é particularmente desagradável quando você adiciona uma permissão não herdável à raiz de uma hierarquia profunda, mas precisa esperar que a "caminhada" da permissão seja concluída antes que o shell retorne o controle para você.)

Não sei qual foi a lógica por trás dessa decisão de design, além de dizer que o comportamento preserva um grau de compatibilidade com versões mais antigas do NTFS e porque provavelmente era mais fácil implementar o mecanismo dessa maneira (menos canto -cases). Meu entendimento era que o sistema de arquivos Netware, por exemplo, implementava o cálculo em tempo real das permissões herdadas, em oposição à marcação explícita de ACLs "ineherited" como NTFS. Eu diria que o sistema de arquivos Netware prova que esse modelo de permissão calculado em tempo real é efetivamente possível de ser implementado com desempenho razoável.

    
por 22.07.2010 / 14:02