Não foi possível atribuir permissões de grupo com o ICACLS no Windows Server 2012

9

Não consigo que os icacls aceitem meu grupo para adicionar permissões. Estou usando um shell de energia elevada com o seguinte comando:

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

Estou tendo o erro a seguir:

Invalid parameter "Group Foo"

Eu tentei usar o SUID também, mas isso também falha. Eu também tentei 'Domain \ Group Foo'

Eu tenho vários arquivos que estou tentando permitir que um grupo use. Qual é a maneira correta de adicionar permissões em massa no Windows Server 2012?

- EDITAR -

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

Respostas:

10

Use aspas duplas em vez de aspas 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

Eu senti falta de você estar usando o Powershell, não cmd. O Powershell tem uma alta estranheza ao misturar comandos e cotações externas. Aqui estão alguns exemplos usando o Powershell.

PS v2: para passar as aspas, icaclsvocê deve escapá-las com um sinal de intercalação. Observe que os parênteses ao redor do "F" também precisam ser escapados.

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

PS v3: a versão 3 oferece uma nova sequência de escape --%(traço, traço, porcentagem) que escapa o restante da linha. Isso simplifica até mesmo parâmetros externos complexos.

PS C:\>icacls --% "C:/foo" /grant:r "Users":F
jscott
fonte
Veja minha edição acima. isso também não funcionou. Note que estou recebendo erros de "parâmetro inválido" e não "nenhum mapeamento entre nomes de contas"
user319862
Eu apenas tentei novamente usando o prompt de comando em vez do shell de energia e funcionou. Não sei qual é o problema, mas obrigado pela sintaxe correta.
user319862
Desculpe, totalmente ignorado que você estava usando o PS. Atualizado para incluir exemplos do PS 2/3.
jscott
Para as pessoas que reclamam que isso não funciona, você deve usar o comando no prompt de comando. O comando não funciona no PowerShell.
Mike G
1

Ele não me permite comentar sobre o encadeamento de jscott, mas para que seu comando seja executado corretamente no Powershell, você precisará adicionar aspas ao redor de todo o parâmetro, como tal:

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

Isso funcionará para nomes de grupos que possuem espaços, bem como comandos, incluindo permissões de herança.

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

Em caso de dúvida, sempre aplique aspas ao redor do parâmetro completo. Espero que isto ajude! :)

Josh Vance
fonte