¿Cómo reemplazar los permisos y todo lo que hay dentro con icacls en Windows Server 2012?

15

Usando Windows Server 2012 R2 Y Windows Server 2008 R2.

Tengo una carpeta llamada C:\temp\testy quiero otorgar acceso a SYSTEMun usuario y a todos los archivos y subdirectorios, y eliminar todo lo demás. He probado este comando pero todos los permisos existentes permanecen:

Los permisos existentes son:

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

Quiero eliminar todas las ACL excepto SYSTEMy agregar<DOMAIN>\<USER>

Intenté 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

Cuando miro los permisos después, <DOMAIN>\<USER>tiene los permisos correctos pero todos los demás permanecen. Pensé que /grant:rreemplazó todos los permisos? ¿Sabes qué comando necesito ejecutar para eliminar todos los demás permisos?

Mark Allison
fuente
Este comando hace exactamente lo que quiero, cacls c:\temp\test /t /g <DOMAIN>\<USER>:Fpero he oído que icacls lo ha reemplazado, ¿alguien puede mostrarme la versión icacls equivalente para producir el mismo comportamiento?
Mark Allison
3
/grant:rsolo elimina los permisos explícitos existentes, no los heredados de la carpeta anterior. Necesitarías incluir /inheritance:rtambién.
TheCleaner
1
Si CACLS hace el trabajo, entonces no hay razón para que no pueda usarlo, ya sea que haya quedado en desuso o no.
joeqwerty
@joeqwerty cierto pero se siente tan sucio. cacls incluso devuelve un mensaje para usar icacls, por lo que debe haber una muy buena razón. NOTE: Cacls is now deprecated, please use Icacls.
Mark Allison
2
@joeqwerty cacls.exepuede configurar las ACL en el orden incorrecto, lo que puede causar problemas (lo dejaré como un ejercicio para el lector).
Craig

Respuestas:

16

Como se menciona en los comentarios, también debe usar el /inheritance:rinterruptor para eliminar los permisos heredados.

/grant:r solo elimina permisos explícitos.

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

Para otorgar también SYSTEM:

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

El parámetro /grant:rno funcionó para mí. Tuve que usar /resetpara revertir los permisos a herencia solamente y luego eliminar los permisos heredados. No olvides cambiar los subdirectorios con /tbandera.

Jan Zahradník
fuente