найти доступные для записи файлы с powershell - PullRequest
0 голосов
/ 14 декабря 2018

Я могу использовать эту команду на моем компьютере с Win10, чтобы обнаружить файлы, которые доступны для записи всем пользователям (в рамках текущей иерархии каталогов):

get-childitem -recurse | get-acl | out-string -stream | select-string -pattern "everyone"

Это отлично работает, но на моем компьютере с Win7 out-string -stream кажетсяобрезать вывод select-string не удается.

Есть ли способ найти файлы на Win7?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Проверьте соответствующие свойства вместо преобразования вывода Get-Acl в строку.Это работает на всех версиях Windows:

Get-ChildItem -Recurse -Force | Where-Object {
    $acl = Get-Acl $_.FullName
    $acl.Access | Where-Object { $_.IdentityReference -eq 'Everyone' }
}

. Вы можете расширить проверку, чтобы фактически обнаружить ACE, которые разрешают запись для записи «Все» (приведенное выше обнаружит любой ACE для «Все»).):

Get-ChildItem -Recurse -Force | Where-Object {
    $acl = Get-Acl $_.FullName
    $acl.Access | Where-Object {
        $_.IdentityReference -eq 'Everyone' -and
        $_.AccessControlType -eq 'Allow' -and
        $_.FileSystemRights -band 278
    }
}

Однако остерегайтесь того, что списки ACL DENY имеют приоритет над списками ACL ALLOW, а явные ACL имеют приоритет над унаследованными списками ACL, поэтому «Все» могут иметь или не иметь права на запись, даже если существуетACE, предоставляющий доступ для записи.

  • РАЗРЕШИТЬ ACE без DENY ACE ⇒ доступ разрешен (очевидно)
  • РАЗРЕШИТЬ ACE без РАЗРЕШИТЬ ACE ⇒ доступ запрещен (очевидно)
  • наследуется ALLOWACE и унаследованный DENY ACE ⇒ доступ запрещен
  • явно разрешен ACE и унаследован DENY ACE ⇒ доступ разрешен
  • унаследован ALLOW ACE и явный DENY ACE ⇒ доступ запрещен
  • явно разрешен ACE иявный DENY ACE ⇒ отказано в доступе
0 голосов
/ 14 декабря 2018

Как насчет этого:

Get-ChildItem -Recurse |
    Get-Acl | 
        Where-Object { $_.AccessToString -match 'everyone' } | 
            Select-Object Path, Owner, @{Name='Access'; Expression={$_.AccessToString}} | 
                Format-List

(вы можете написать это как однострочник, но для удобства чтения ..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...