Permissões NTFS - Crie arquivos e pastas, mas evite exclusão e modificação

10

Objetivo: uma pasta compartilhada na qual os usuários podem criar arquivos, mas não podem modificá-los ou excluí-los. Os usuários também devem poder criar subpastas.

Eu concedi ao meu grupo de segurança as seguintes permissões NTFS avançadas:

  • Atravessar Pasta / Executar Arquivo
  • Pasta de lista / leitura de dados
  • Atributos de Leitura
  • Ler atributos estendidos
  • Criar arquivos / gravar dados
  • Permissões de leitura

Através de um processo de tentativa e erro, descobri que NÃO concedendo 'Atributos de gravação', isso tem o efeito de impedir que um usuário modifique / exclua arquivos existentes (que é o que eu quero). No entanto, eu realmente gostaria de uma explicação sobre exatamente por que isso funciona. A única teoria que tenho é que a exclusão / modificação de um arquivo altera os atributos do arquivo? Aqui está uma discussão na mesma linha .

Edição - A segunda parte da minha pergunta é irrelevante, eu pensei que tinha selecionado apenas 'Criar arquivos / gravar dados', mas também tinha 'Criar pastas / anexar dados' também selecionado.

Além disso, quero que os usuários possam criar subpastas dentro da raiz e descobri que, ao conceder 'Criar arquivos / gravar dados', isso permite exatamente isso. Mas, novamente, o nome sugere que essa permissão deve apenas permitir a criação de arquivos, não pastas, então não entendo por que está funcionando? A explicação da Microsoft do atributo 'Criar Arquivos / Gravar Dados' é "Para pastas, especifica se um usuário pode criar arquivos dentro da pasta. Para arquivos, especifica se um usuário pode alterar ou substituir dados". Não há menção da capacidade de criar subpastas dentro de uma pasta?

Então, basicamente, eu consegui o que me propus a fazer, mas não entendo por que funciona?

Fitzroy
fonte
O conteúdo de um arquivo NTFS É um "atributo"; ou seja, o atributo de dados não nomeado padrão e talvez um ou mais atributos de dados nomeados.
kreemoweet
Veja também a boa resposta aqui: superuser.com/a/1145363/132727
CrazyTim

Respostas:

7

Através de um processo de tentativa e erro, descobri que NÃO concedendo 'Atributos de gravação', isso tem o efeito de impedir que um usuário modifique / exclua arquivos existentes (que é o que eu quero). No entanto, eu realmente gostaria de uma explicação sobre exatamente por que isso funciona.

Essa é uma função exata de como ocorre uma modificação do arquivo. Quando você modifica um arquivo, o sistema operacional não modifica o arquivo que você está editando. Ele substitui o arquivo que você está editando pela cópia que você alterou. Portanto, essencialmente, uma modificação de arquivo pega uma cópia do arquivo original, carrega-a na memória (onde você a modifica), exclui o arquivo original e cria um novo arquivo com o mesmo nome no mesmo local. É por isso que as Deletepermissões NTFS são necessárias para modificar arquivos - na verdade, se você verificar Advanced permissionsum objeto NTFS, não há Modifypermissão - uma modificação é realmente apenas uma exclusão e uma gravação.

Portanto, para criar essa nova cópia de um arquivo, ele deve escrever os atributos de arquivo desse novo arquivo ... e, é claro, escrever atributos requer a Write attributespermissão NTFS. É por isso que você não pode modificar um arquivo sem ter a Write attributespermissão NTFS.

Especificamente, graças a um bate-papo com Fitzroy , o atributo de arquivo NTFS que precisa ser gravado no contexto de segurança do usuário (que não pode ser, sem a Write Attributespermissão), ao modificar um arquivo, mas não ao criar um completamente novo, ser o arquivo LastModificationTime. Isso faz parte do Standard Informationatributo, de acordo com um dos desenvolvedores do Microsoft Core Team .

HopelessN00b
fonte
11
"É por isso que as permissões de exclusão de NTFS são necessárias para modificar arquivos - de fato, se você verificar as permissões avançadas em um objeto NTFS, não há permissão de modificação - uma modificação é realmente apenas uma exclusão e uma gravação." Você pode apoiar isso com fatos ou referências? Porque, através de testes adicionais, descobri que, para modificar o conteúdo de um arquivo de texto simples (usando o bloco de notas), adicionei as seguintes permissões: Escrever Atributos, Escrever Atributos Estendidos e Criar Pastas / Anexar Dados. Eu aceito que os diferentes programas poderão apresentar um comportamento diferente quando se modifica um arquivo ...
Fitzroy
... no entanto, acho que este teste prova que 'Excluir' não é necessário.
Fitzroy
"Essa é uma função exata de como ocorre uma modificação do arquivo. Quando você modifica um arquivo, o sistema operacional não modifica o arquivo que você está editando. Ele substitui o arquivo que você está editando pela cópia que você alterou. Portanto, essencialmente, uma modificação de arquivo pega uma cópia do arquivo original, carrega-a na memória (onde você o modifica), exclui o arquivo original e cria um novo arquivo com o mesmo nome no mesmo local ". - é bastante enganador e impreciso em muitos níveis técnicos diferentes .
user2864740
3

É verdade: não ter a permissão 'Write Attributes' faz com que o usuário não possa modificar seus arquivos. E, de acordo com a documentação da Microsoft, não faz sentido. Mas modificar um arquivo não implica na exclusão e recreação dele. Quando um aplicativo abre um arquivo para modificação, o sistema operacional não exclui o arquivo. Mas, o que o sistema operacional faz é bloquear o arquivo para evitar modificações simultâneas. Meu palpite é que o bloqueio do arquivo se enquadra no conceito de 'alteração de atributos do arquivo'. Portanto, não poder alterar atributos resulta em não conseguir modificar o arquivo.

Para a segunda parte da sua pergunta, não posso reproduzir isso. Existem duas permissões diferentes que se aplicam a uma pasta: 'Criar arquivos / ...' e 'Criar pastas / ...' e elas funcionaram de acordo com a documentação durante meus testes.

drk.com.ar
fonte
Drk - Apenas digerindo sua resposta. Para sua informação, omiti uma permissão na minha pergunta. Também deveria ter listado 'Ler atributos estendidos'. Sem essa permissão, descobri que os usuários não podem visualizar o conteúdo de um arquivo (eles recebem um erro 'Acesso negado'). Atualizei minha pergunta de acordo.
Fitzroy
Ok, para o meu teste, presumi que você também estivesse concedendo essa permissão. Descobri que o bloco de notas não pode modificar um arquivo mesmo com a permissão '... / gravar dados' concedida. Aqui está outra coisa que vale a pena notar: a gravação de dados versus a permissão de adição de dados dependem de como o aplicativo abre o arquivo para modificação. Provavelmente, o bloco de notas abre arquivos para acrescentar dados sempre, mesmo que não sejam necessários.
Drk.com.ar
Para a segunda parte da sua pergunta, não posso reproduzir isso. Existem duas permissões diferentes que se aplicam a uma pasta: 'Criar arquivos / ...' e 'Criar pastas / ...' e elas funcionaram de acordo com a documentação durante meus testes. Você está certo, meu erro, pensei que havia selecionado apenas 'Criar arquivos / gravar dados', mas também tinha selecionado 'Criar pastas / anexar dados'.
Fitzroy