Windows: список файлов и их разрешения (доступ) в командной строке
В Linux ls -l
перечисляет права доступа к файлам, как это:
-rw-r--r-- 1 user user 924 2011-07-01 20:23 test.txt
В Windows команды tree
а также dir
не имеют возможности перечислить разрешения. Как можно перечислить файлы и их разрешения, используя только командную строку?
5 ответов
Используйте 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)
Более старый инструмент cacls - единственный выбор в Windows XP [хотя вы можете копировать icacls.exe
с сервера 2003]. cacls не знает о некоторых режимах ACL, но отображает большинство из них нормально.
> 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
В обоих выходах (OI)
означает "наследование объекта" (файлы наследуют этот ACE), (CI)
является "наследовать контейнер" (контейнеры - т.е. папки - будут наследовать этот ACE), (IO)
это "только наследовать".
Microsoft также использовала отдельно инструмент xcacls, но теперь его функциональность является частью icacls.
Вы можете использовать Powershell и Get-Acl
команда
PS C:\> Get-Acl
Directory:
Path Owner Access
---- ----- ------
C:\ NT SERVICE\TrustedInstaller Everyone Allow FullControl
Используйте его в сочетании с Get-ChildItem
(с псевдонимом dir
а также ls
), чтобы получить разрешения для файлов.
PS C:\> Get-ChildItem | Get-Acl
Или, используя псевдоним:
PS C:\> Dir | Get-Acl
Вы также можете взглянуть на AccessChk от Sysinternals. Вывод может быть проанализирован намного проще.
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
Если вам нужны только атрибуты файла Windows (а не право собственности или списки управления доступом), вы можете использовать команду Powershell Dir (ярлык для команды Get-ChildItem ). Например:
...>powershell dir
Directory: C:\...
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 09/04/2022 18:09 testfiles
-a---- 08/04/2022 23:19 130844 testbbackupd.cpp
-a---- 08/04/2022 23:19 94 testextra
-a---- 09/04/2022 18:06 8394752 test_bbackupd.exe
Буквы в свойстве Mode — это атрибуты каждого файла Windows, которые можно интерпретировать следующим образом:
- л (ссылка)
- д (каталог)
- а (архив)
- р (только чтение)
- ч (скрыто)
- с (система).