Windows: liste les fichiers et leurs autorisations (accès) en ligne de commande

56

Sous Linux, ls -lrépertorie les droits d'accès aux fichiers, comme ceci:

-rw-r--r--  1 user user      924 2011-07-01 20:23 test.txt

Sous Windows, les commandes treeet dirne disposent pas des options pour répertorier les autorisations. Comment est-il possible de répertorier les fichiers et leurs autorisations en ligne de commande uniquement?

Jens Erat
la source
Euh, peut-être %~aX, si c'est en lot? C'est comme d----------.
Константин Ван

Réponses:

64

Utilisez des icacls :

> icacls Music
Music SNOW\grawity:(I)(F)
      CREATOR OWNER:(I)(OI)(CI)(IO)(F)
      SNOW\grawity:(I)(OI)(CI)(IO)(F)
      NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)

L'ancien outil cacls est le seul choix sous Windows XP [bien que vous puissiez copier à icacls.exepartir de Server 2003]. cacls ne connaît pas certains modes ACL, mais affiche la plupart d’entre eux correctement.

> cacls Music
F:\Users\Mantas\Music SNOW\grawity:F
                      CREATOR OWNER:(OI)(CI)(IO)F
                      SNOW\grawity:(OI)(CI)(IO)F
                      NT AUTHORITY\SYSTEM:(OI)(CI)F

Dans les deux sorties, (OI)signifie "hériter d'objet" (les fichiers hériteront de cette ACE), (CI)est "conteneur hérité" (les conteneurs - c'est-à-dire les dossiers - hériteront de cette ACE), (IO)sera "hériter uniquement".

Microsoft fournissait également un outil xcacls séparément, mais ses fonctionnalités font maintenant partie d’ icacls .

Grawity
la source
29

Vous pouvez utiliser Powershell et la Get-Aclcommande

PS C:\> Get-Acl

   Directory:

Path              Owner                            Access  
----              -----                            ------  
C:\               NT SERVICE\TrustedInstaller      Everyone Allow  FullControl

Utilisez-le avec Get-ChildItem(alias avec diret ls) pour obtenir les autorisations pour les fichiers.

PS C:\> Get-ChildItem | Get-Acl

Ou, en utilisant l'alias:

PS C:\> Dir | Get-Acl
écailleur
la source
13
PS C:\> Get-Acl | flpour une meilleure liste.
AWippler
Puis-je modifier cela pour ignorer un dossier auquel je n'ai pas accès? par exemple, quand j'ai exécuté ceci (pas en tant qu'administrateur), j'ai eu une erreur ("opération non autorisée") et le rapport s'est arrêté dans le dossier
Ben
14

Vous pouvez également consulter AccessChk de Sysinternals. La sortie peut être analysée beaucoup plus facilement.

C:\Users\jeremy>accesschk myad\simmonsj c:\inetpub

Accesschk v5.11 - Reports effective permissions for securable objects
Copyright (C) 2006-2012 Mark Russinovich
Sysinternals - www.sysinternals.com

RW c:\inetpub\custerr
RW c:\inetpub\history
RW c:\inetpub\logs
RW c:\inetpub\Roadkill
RW c:\inetpub\smartadmin
RW c:\inetpub\temp
RW c:\inetpub\wwwroot
JJS
la source
Cela fait une chose différente cependant; il répertorie l' accès effectif pour l'utilisateur actuel (ou spécifié), plutôt que la liste d'accès configurée complète.
Grawity
1
Je pense que la question du PO aurait pu être interprétée de toute façon. À en juger par le récent vote positif sur ma réponse, cela a été utile à au moins une autre personne que moi. Ma réponse ne vise pas à discuter ou à réfuter votre réponse. C'est une façon différente d'aborder le problème que d'obtenir une réponse très similaire.
JJS
4

dir /Q vous donne le propriétaire des répertoires.

James Selvakumar
la source