Пытаясь очистить разрешения на этом сервере IIS6 с PHP CGI, кажется, что несколько файлов / папок имеют права на запись для всех. (Вероятно, вы можете догадываться, что происходит неоднократно.)
В общем, я ищу эквивалент find $directory -perm 777 -exec ls -ld {} \;
Я могу сделать первую часть, листинг файлы, которые упомянуть Все с icacls
, но не может отображать фактический ACL:
icacls \directory /findSID *S-1-1-0 /t
Глядя на subinacl
документации и различных результатов Google, кажется, что я могу использовать / subdirectories и / display для достижения этого, но он сразу же возвращается без результатов и ошибок:
C:\>subinacl /subdirectories \directory\*.* /findsid=Everyone /display
+subdirectories \directory\*.*
/findsid=Everyone
/display
Elapsed Time: 00 00:00:00
Done: 0, Modified 0, Failed 0, Syntax errors 0
Предложение Orbitron отличное, но если вы хотите использовать чисто PowerShell, не устанавливая pstools, взгляните на select-string
командлет. Возможно, вам придется сначала передать конвейер объектов в файл, а затем использовать его с помощью строки выбора, или вы можете клин out-string
в трубопровод.
Get-ChildItem -Recurse | Get-Acl | out-string -stream | select-string -pattern "everyone"
Это сработало для меня с PowerShell и pstools:
Get-ChildItem C:\temp\ -Recurse | Get-Acl | grep "Everyone"
Возможно, вам придется доработать его для ваших нужд, но PowerShell - это то, что вам нужно.