Comment remplacer les autorisations et tout ce qu'il y a à l'intérieur avec icacls sur Windows Server 2012?

15

Utilisation de Windows Server 2012 R2 ET Windows Server 2008 R2.

J'ai un dossier appelé C:\temp\testet je veux accorder l'accès à SYSTEMun utilisateur et à tous les fichiers et sous-répertoires, et supprimer tout le reste. J'ai essayé cette commande mais toutes les autorisations existantes restent:

Les autorisations existantes sont:

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

Je veux supprimer toutes les ACL sauf SYSTEMet ajouter<DOMAIN>\<USER>

J'ai essayé cette commande:

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

Lorsque je regarde les autorisations par la suite, le <DOMAIN>\<USER>a les autorisations correctes mais toutes les autres restent. Je pensais avoir /grant:rremplacé toutes les autorisations? Savez-vous quelle commande je dois exécuter pour supprimer toutes les autres autorisations?

Mark Allison
la source
Cette commande fait exactement ce que je veux cacls c:\temp\test /t /g <DOMAIN>\<USER>:Fmais j'ai entendu dire que icacls l'a remplacée, quelqu'un peut-il me montrer la version icacls équivalente pour produire le même comportement?
Mark Allison
3
/grant:rsupprime uniquement les autorisations explicites existantes, pas celles héritées du dossier ci-dessus. Vous devez également l'inclure /inheritance:r.
TheCleaner
1
Si CACLS fait le travail, il n'y a aucune raison pour que vous ne puissiez pas l'utiliser, qu'il soit obsolète ou non.
joeqwerty
@joeqwerty vrai mais il se sent tellement sale. cacls lui-même retourne même un message pour utiliser icacls, donc il doit y avoir une très bonne raison. NOTE: Cacls is now deprecated, please use Icacls.
Mark Allison
2
@joeqwerty cacls.exepeut définir les ACL dans le mauvais ordre, ce qui peut entraîner des problèmes (je laisserai cela comme un exercice pour le lecteur).
Craig

Réponses:

16

Comme mentionné dans les commentaires, vous devez également utiliser le /inheritance:rcommutateur pour supprimer les autorisations héritées.

/grant:r supprime uniquement les autorisations explicites.

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

Accorder également SYSTEM:

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

Le paramètre /grant:rn'a pas fonctionné pour moi. J'ai dû utiliser /resetpour rétablir les autorisations à l'héritage uniquement, puis supprimer les autorisations héritées. N'oubliez pas de changer les sous-répertoires avec /tflag.

Jan Zahradník
la source