Impossible d'attribuer des autorisations de groupe avec ICACLS sur Windows Server 2012

9

Je ne peux pas demander à icacls d'accepter mon groupe pour ajouter des autorisations. J'utilise un shell de puissance élevée avec la commande suivante:

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

J'obtiens l'erreur suivante:

Invalid parameter "Group Foo"

J'ai également essayé d'utiliser le SUID, mais cela échoue également. J'ai également essayé «Domain \ Group Foo»

J'ai un tas de fichiers que j'essaie d'autoriser un groupe à utiliser. Quelle est la bonne façon d'ajouter des autorisations de masse dans Windows Server 2012?

-- ÉDITER --

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

Réponses:

10

Utilisez des guillemets doubles au lieu de guillemets 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

J'ai manqué que vous utilisiez Powershell, non cmd. Powershell a une certaine bizarrerie élevée lors du mélange des commandes externes et des citations. Voici quelques exemples d'utilisation de Powershell.

PS v2: Pour transmettre les guillemets, icaclsvous devez les échapper avec un curseur. Notez que les parenthèses autour du "F" doivent également s'échapper.

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

PS v3: la version 3 propose une nouvelle séquence d'échappement --%(tiret, tiret, pourcentage) qui échappe au reste de la ligne. Cela simplifie même les paramètres externes complexes.

PS C:\>icacls --% "C:/foo" /grant:r "Users":F
jscott
la source
Voir ma modification ci-dessus. Cela n'a pas fonctionné non plus. Notez que je reçois des erreurs de "paramètre non valide" et non "pas de mappage entre les noms de compte"
user319862
J'ai juste essayé à nouveau d'utiliser l'invite de commande au lieu de Power Shell et cela a fonctionné. Je ne sais pas quel est le problème, mais merci pour la syntaxe correcte.
user319862
Désolé, vous avez totalement ignoré que vous utilisiez PS. Mis à jour pour inclure des exemples PS 2/3.
jscott
Pour les personnes se plaignant que cela ne fonctionne pas, vous devez utiliser la commande dans l'invite de commandes. La commande ne fonctionne pas en PowerShell.
Mike G
1

Cela ne me permettra pas de commenter le fil de jscott, mais pour que votre commande s'exécute correctement dans Powershell, vous devrez ajouter des guillemets autour de l'ensemble du paramètre, en tant que tel:

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

Cela fonctionnera pour les noms de groupe contenant des espaces, ainsi que pour les commandes incluant les autorisations d'héritage.

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

En cas de doute, appliquez toujours des guillemets autour du paramètre complet. J'espère que cela t'aides! :)

Josh Vance
la source