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?
fonte
Respostas:
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
Delete
permissões NTFS são necessárias para modificar arquivos - na verdade, se você verificarAdvanced permissions
um objeto NTFS, não háModify
permissã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 attributes
permissão NTFS. É por isso que você não pode modificar um arquivo sem ter aWrite attributes
permissã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 Attributes
permissão), ao modificar um arquivo, mas não ao criar um completamente novo, ser o arquivoLastModificationTime
. Isso faz parte doStandard Information
atributo, de acordo com um dos desenvolvedores do Microsoft Core Team .fonte
É 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.
fonte