No se pueden asignar permisos de grupo con ICACLS en Windows Server 2012

9

No puedo obtener icacls para aceptar a mi grupo por agregar permisos. Estoy usando un shell de potencia elevada con el siguiente comando:

icacls 'C:/foo' /grant:r 'Group Foo':f

Obtuve el siguiente error:

Invalid parameter "Group Foo"

También he intentado usar el SUID, pero eso también falla. También probé 'Domain \ Group Foo'

Tengo un montón de archivos que estoy tratando de permitir que un grupo use. ¿Cuál es la forma correcta de agregar permisos masivos en Windows Server 2012?

- EDITAR -

E:\> icacls "E:/Contact Numbers.xlsx" /grant:r "Users":f
Invalid parameter "Users"
usuario319862
fuente

Respuestas:

10

Use comillas dobles en lugar de comillas simples:

C:\>mkdir foo

C:\>icacls 'C:/foo' /grant:r 'Users':f
'Users': No mapping between account names and security IDs was done.
Successfully processed 0 files; Failed processing 1 files

C:\>icacls "C:/foo" /grant:r "Users":f
processed file: C:/foo
Successfully processed 1 files; Failed processing 0 files

Extrañaba que estuvieras usando Powershell, no cmd. Powershell tiene una gran rareza al mezclar comandos externos y citas. Aquí hay un par de ejemplos usando Powershell.

PS v2: para pasar las citas icaclsdebe escapar de ellas con un intercalado. Nótese también el paréntesis alrededor de la "F".

PS C:\>icacls `"C:/foo`" /grant:r `"Users`":`(F`)

PS v3: la versión 3 ofrece una nueva secuencia de escape --%(guión, guión, porcentaje) que escapa al resto de la línea. Esto simplifica incluso los parámetros externos complejos.

PS C:\>icacls --% "C:/foo" /grant:r "Users":F
jscott
fuente
Vea mi edición arriba. Esto no funcionó bien. Tenga en cuenta que recibo errores de "Parámetros no válidos" y no "Sin asignación entre nombres de cuenta"
user319862
Acabo de intentarlo nuevamente usando el símbolo del sistema en lugar de Power Shell y funcionó. No sé cuál es el problema, pero gracias por la sintaxis correcta.
user319862
Lo sentimos, omití totalmente que estabas usando PS. Actualizado para incluir ejemplos de PS 2/3.
jscott
Para las personas que se quejan de que no funciona, debe usar el comando en el símbolo del sistema. El comando no funciona en powershell.
Mike G
1

No me dejará comentar sobre el hilo de jscott, pero para que su comando se ejecute correctamente en Powershell, deberá agregar comillas alrededor del parámetro completo, como tal:

    C:\> icacls .\foo /grant:r "Users:F"

Esto funcionará para los nombres de grupos que tienen espacios en ellos, así como los comandos que incluyen permisos de herencia.

    C:\> icacls .\foo /grant:r "Remote Desktop Users:(OI)(CI)(F)"

En caso de duda, siempre aplique comillas alrededor del parámetro completo. ¡Espero que esto ayude! :)

Josh Vance
fuente