Use icacls para tornar um diretório somente leitura no Windows 7

0

Estou tentando testar algumas exceções do sistema de arquivos em um aplicativo baseado em Java.

Eu preciso encontrar uma maneira de criar um diretório localizado em% TMP% definido como somente leitura.

Essencialmente em plataformas UNIX / POSIX, posso fazer um chmod -w e obter esse efeito. No Windows 7 / NTFS, é claro que esta é uma história diferente.

Estou correndo em vários problemas sobre isso. Meu usuário tem direito "administrativo" (embora isso nem sempre seja o caso) e, como tal, o diretório é criado com uma ACL, incluindo:

  • NT AUTHORITY \ SYSTEM
  • BUILTIN \ Administradores
  • < meu usuário atual >

Existe uma maneira de usar o icacls para essencialmente colocar esse diretório em um estado onde ele é PERIOD de somente leitura, fazer meu teste e restaurar a ACL para remoção?

EDITAR Com as informações fornecidas por @Ansgar Wiechers, consegui encontrar uma solução.

Eu usei o seguinte:

icacls dirname /deny %username%:(WD)

Na página localizada aqui , encontrei isso em a seção de comentários:

icacls preserves the canonical order of ACE entries as:
  * Explicit denials
  * Explicit grants
  * Inherited denials
  * Inherited grants

Ao executar o comando icalcs acima, eu consegui definir a capacidade do usuário atual de gravar ou anexar arquivos (WD) ao diretório para negar.

Depois, foi uma questão de devolvê-lo a um teste de estado:

icacls dirname /reset /t /c

Concluído

    
por Dave G 05.09.2012 / 14:52

1 resposta

1

Se o seu usuário tiver direitos administrativos, ele sempre poderá recuperar as permissões que você revogar dele. As contas de administrador no Windows são praticamente as mesmas que o root no Linux a esse respeito.

O que você pode fazer é criar uma ACL que deny escreva o acesso a Everyone . Isso torna uma pasta tão somente leitura quanto possível no Windows.

icacls DIRECTORY /deny Everyone:(CI)(OI)W

Tenha em atenção que deny de ACLs substituem sempre allow de ACL, pelo que, mesmo que seja concedido acesso explícito a alguém, o acesso dele será efetivamente negado.

    
por 05.09.2012 / 15:21