Поиск файлов / папок с разрешениями на запись / полное управление для всех в Windows 2003
При попытке очистить разрешения на этом сервере IIS6 с PHP CGI создается впечатление, что несколько файлов / папок имеют права на запись для всех. (Вы, вероятно, можете догадаться, что происходит, неоднократно.)
Итак, в основном, я ищу эквивалент find $directory -perm 777 -exec ls -ld {} \;
Я могу сделать это в первой части, перечисляя файлы, в которых упоминается Все с icacls
, но не может отображать фактический ACL:
icacls \directory /findSID *S-1-1-0 /t
Глядя на subinacl
документация и различные результаты Google, кажется, что я могу использовать / подкаталоги и /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
2 ответа
Это работало для меня с powershell и pstools:
Get-ChildItem C:\temp\ -Recurse | Get-Acl | grep "Everyone"
Возможно, вам придется усовершенствовать его больше для ваших нужд, но PowerShell - это то, что вам нужно.
Предложение Orbitron великолепно, но если вы хотите использовать чисто PowerShell без установки pstools, взгляните на select-string
Командлет. Возможно, вам придется сначала передать конвейер объекта в файл, а затем использовать его с помощью select-string, или вы можете втиснуть out-string
в трубопровод.
Get-ChildItem -Recurse | Get-Acl | out-string -stream | select-string -pattern "everyone"