Through a process of trial and error, I have found that by NOT granting 'Write Attributes', this has the effect of preventing a user from modifying/deleting existing files (which is what I want). However, I would really like an explanation as to precisely why this works.
Esta é uma função de precisamente como ocorre uma modificação no arquivo. Quando você modifica um arquivo, o sistema operacional na verdade não modifica o arquivo que você está editando. Ele substitui o arquivo que você está editando pela cópia que você alterou. Então, essencialmente, uma modificação de arquivo leva uma cópia do arquivo original, carrega isto na memória (onde você modifica isto), apaga o arquivo original, e cria um arquivo novo com o mesmo nome no mesmo lugar. É por isso que as permissões NTFS Delete
são necessárias para modificar arquivos - na verdade, se você verificar o Advanced permissions
em um objeto NTFS, não haverá permissão Modify
- uma modificação é apenas uma exclusão e uma gravação. p>
Assim, para criar essa nova cópia de um arquivo, é necessário gravar os atributos de arquivo desse novo arquivo ... e, é claro, a gravação de atributos requer a permissão Write attributes
NTFS. Então é por isso que você não pode modificar um arquivo sem ter a permissão Write attributes
NTFS.
Especificamente, graças a um bate-papo com Fitzroy , o Atributo de arquivo NTFS que precisa ser escrito sob o contexto de segurança do usuário (que pode seja, sem a permissão Write Attributes
), ao modificar um arquivo, mas não ao criar um completamente novo, seria o arquivo LastModificationTime
. Esta é uma parte do atributo Standard Information
, de acordo com um dos desenvolvedores do Microsoft Core Team .