Como substituir permissões e tudo mais por icacls no Windows Server 2012?

15

Usando o Windows Server 2012 R2 E o Windows Server 2008 R2.

Eu tenho uma pasta chamada C:\temp\teste desejo conceder acesso a SYSTEMum usuário e a todos os arquivos e subdiretórios e remover tudo o mais. Eu tentei este comando, mas todas as permissões existentes permanecem:

As permissões existentes são:

Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         BUILTIN\Users Allow  ReadAndExecute, Synchronize
         BUILTIN\Users Allow  AppendData
         BUILTIN\Users Allow  CreateFiles
         CREATOR OWNER Allow  268435456

Desejo remover todas as ACLs SYSTEM, exceto , e adicionar<DOMAIN>\<USER>

Eu tentei este comando:

icacls c:\temp\test /grant:r <DOMAIN>\<USER>:(OI)(CI)F /t

processed file: c:\temp\test
Successfully processed 1 files; Failed processing 0 files

Quando olho para as permissões posteriormente, ele <DOMAIN>\<USER>tem as permissões corretas, mas todas as outras permanecem. Eu pensei que /grant:rsubstituiu todas as permissões? Você sabe qual comando eu preciso executar para remover todas as outras permissões?

Mark Allison
fonte
Esse comando faz exatamente o que eu quero, cacls c:\temp\test /t /g <DOMAIN>\<USER>:Fmas ouvi dizer que o icacls o substituiu. Alguém pode me mostrar a versão equivalente do icacls para produzir o mesmo comportamento?
Mark Allison
3
/grant:rremove apenas as permissões explícitas existentes, não as herdadas da pasta acima. Você precisaria incluir /inheritance:rtambém.
TheCleaner
1
Se o CACLS fizer o trabalho, não há motivo para que você não possa usá-lo, tenha sido preterido ou não.
joeqwerty
@joeqwerty verdade, mas parece tão sujo. O próprio cacls retorna uma mensagem para usar icacls, portanto deve haver uma boa razão. NOTE: Cacls is now deprecated, please use Icacls.
22614 Mark Allison
2
O @joeqwerty cacls.exepode definir as ACLs na ordem errada, potencialmente causando problemas (deixarei isso como um exercício para o leitor).
Craig

Respostas:

16

Como mencionado nos comentários, você também precisa usar a /inheritance:ropção para remover permissões herdadas.

/grant:r remove apenas permissões explícitas.

icacls c:\temp\test /inheritance:r /grant:r <DOMAIN>\<USER>:(OI)(CI)F /T

Para também conceder SYSTEM:

icacls c:\temp\test /inheritance:r /grant:r <DOMAIN>\<USER>:(OI)(CI)F /grant:r SYSTEM:(OI)(CI)F /T
krisFR
fonte
7

O parâmetro /grant:rnão funcionou para mim. Eu tive que usar /resetpara reverter permissões apenas para herança e, em seguida, remover as permissões herdadas. Não se esqueça de alterar subdiretórios com /tsinalizador.

Jan Zahradník
fonte