Por que posso gravar arquivos em uma pasta somente leitura?

39

Eu tentei isso no Windows 7 e no Windows XP. Inicie o Windows Explorer e crie uma nova pasta em algum local temporário chamado (digamos) NonWriteable. Clique com o botão direito do mouse na pasta e defina as propriedades da pasta como Read-only.

Pasta definida como somente leitura

Agora abra a pasta e crie um novo arquivo .txt. Isso é permitido. Por quê? Como você define uma pasta para que nada possa ser modificado dentro dela?

Nota: Se eu clicar com o botão direito do mouse no arquivo .txt e configurá-lo Read-only, o sistema impedirá corretamente as atualizações no arquivo.

AlainD
fonte
3
Verifique as opções avançadas e negue ativamente as permissões de gravação. Que tipo de conta você está usando? Uma conta administrativa sempre deve poder mudar as coisas.
Seth
@Seth Uma conta administrativa sempre deve poder mudar as coisas? E se alguém estiver tentando acessar uma pasta em uma máquina diferente?
InterLinked
2
O Windows parece nunca ter usado essa configuração para diretórios. Se estiver dentro de uma unidade compartilhada, você descobrirá que o Linux não poderá criar, excluir ou renomear arquivos, a menos que somente leitura seja limpa.
AFH
2
@ Seth: Boa ligação. Depois de modificar as permissões avançadas na Securityguia para negar acesso Create Files / Write Data, agora não consigo criar novos arquivos. Este parece ser um bug / limitação do Windows. Se eu chamar programaticamente a GetFileAttributesAPI na pasta, o FILE_ATTRIBUTE_DIRECTORYatributo está definido ... mas não FILE_ATTRIBUTE_READONLY.
AlainD
2
Observe que, começando no Windows 7, a caixa de diálogo foi alterada Read-only (Only applies to files in this folder)para tornar mais claro o que essa opção realmente faz. Há uma captura de tela da nova caixa de diálogo nesta resposta .
ComicSansMS

Respostas:

56

Diferentemente do atributo Somente leitura de um arquivo, o atributo Somente leitura de uma pasta geralmente é ignorado pelo Windows, componentes e acessórios do Windows e outros programas. Por exemplo, você pode excluir, renomear e alterar uma pasta com o atributo Somente Leitura usando o Windows Explorer.

Os atributos Somente leitura e Sistema são usados ​​apenas pelo Windows Explorer para determinar se a pasta é uma pasta especial, como uma pasta do sistema que possui sua visualização personalizada pelo Windows (por exemplo, Meus documentos, Favoritos, Fontes, Arquivos de programa baixados) ou uma pasta que você personalizou usando a guia Personalizar da caixa de diálogo Propriedades da pasta. Como resultado, o Windows Explorer não permite exibir ou alterar os atributos Somente leitura ou Sistema das pastas. Quando uma pasta tem o atributo Somente Leitura definido, ele faz com que o Explorer solicite o Desktop.ini dessa pasta para verificar se é necessário definir configurações especiais de pasta.

Origem: https://support.microsoft.com/en-gb/help/326549/you-cannot-view-or-change-the-read-only-or-the-system-attributes-of-fo

Este é um artigo antigo, mas ainda é válido para todas as versões do Windows.

Para impedir a criação de arquivos em uma pasta, altere as permissões usando a Securityguia nas propriedades da pasta. Clique no Advancedbotão e adicione uma regra à qual negar acesso Create Files / Write Data.

David Marshall
fonte
11
@AlainD Sim. É um artigo antigo, mas ainda se aplica a versões mais recentes do Windows. Voltarei e expandirei a resposta mais tarde.
David Marshall
11
Portanto, o atributo "somente leitura" de uma pasta não tem absolutamente nada a ver com ser somente leitura? Nada mais é do que uma falha huuuuuge UX?
Pedro A
6
@ Hamsteriffic É um legado de um sistema de arquivos FAT. O FAT costumava suportar apenas alguns atributos de arquivo, sendo RO um deles. O NTFS possui um mecanismo sofisticado de ACL para controle de acesso; portanto, os atributos FAT não têm importância quando o NTFS é empregado. No entanto, o diálogo específico em questão foi elaborado há muitos anos, quando o FAT ainda era predominante e nunca mudou desde então.
oakad
4
@ Hamsteriffic Então, para resumir o comentário dos oakads: Sim.
Alexander Kosubek
2
@jrh Ele escreveu um em 2003 blogs.msdn.microsoft.com/oldnewthing/20030930-00/?p=42353
David Marshall