Windows: enumere los archivos y sus permisos (acceso) en la línea de comandos

56

En Linux, ls -lenumera los permisos de archivos, como este:

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

En Windows, los comandos treey dirno tienen las opciones para enumerar los permisos. ¿Cómo es posible enumerar los archivos y sus permisos usando solo la línea de comandos?

Jens Erat
fuente
Uh, tal vez %~aX, si está en lote? Es como d----------.
Константин Ван

Respuestas:

64

Use 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)

La herramienta cacls más antigua es la única opción en Windows XP [aunque puede copiar icacls.exedesde Server 2003]. cacls no conoce algunos modos de ACL, pero muestra la mayoría de ellos bien.

> 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

En ambas salidas, (OI)significa "heredar objeto" (los archivos heredarán este ACE), (CI)es "heredar contenedor" (los contenedores, es decir, las carpetas heredarán este ACE), (IO)es "heredar solo".

Microsoft también solía proporcionar una herramienta xcacls por separado, pero su funcionalidad ahora es parte de icacls .

Gravedad
fuente
29

Puedes usar Powershell y el Get-Aclcomando

PS C:\> Get-Acl

   Directory:

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

Úselo junto con Get-ChildItem(alias con diry ls) para obtener los permisos para los archivos.

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

O, usando el alias:

PS C:\> Dir | Get-Acl
squillman
fuente
13
PS C:\> Get-Acl | flpara una mejor lista.
AWippler
¿Puedo modificar esto para omitir una carpeta a la que no tengo acceso? por ejemplo, cuando ejecuté esto (no como administrador) recibí un error ("operación no autorizada") y el informe se detuvo en la carpeta a la que no tenía acceso
Ben
14

También puede echar un vistazo a AccessChk de Sysinternals. La salida se puede analizar mucho más fácilmente.

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
fuente
Sin embargo, hace algo diferente; enumera el acceso efectivo para el usuario actual (o especificado), en lugar de la lista de acceso configurada completa.
Grawity
1
Creo que la pregunta del OP podría haber sido interpretada de cualquier manera. A juzgar por el reciente voto positivo sobre mi respuesta, esto fue útil para al menos otra persona además de mí. Mi respuesta no tiene la intención de discutir o refutar su respuesta. Es una forma diferente de abordar el problema para obtener una respuesta muy similar.
JJS
4

dir /Q te da el dueño de los directorios.

James Selvakumar
fuente