Isso funcionou para mim com powershell e pstools:
Get-ChildItem C:\temp\ -Recurse | Get-Acl | grep "Everyone"
Você pode precisar refiná-lo mais para as suas necessidades, mas o powershell é o caminho a seguir.
Tentando limpar as permissões neste servidor IIS6 w / PHP CGI, parece que vários arquivos / pastas têm permissões de gravação para Todos. (Você provavelmente pode adivinhar o que está acontecendo, repetidamente.)
Então, basicamente, estou procurando o equivalente a find $directory -perm 777 -exec ls -ld {} \;
Eu posso fazer essa primeira parte, listando arquivos que mencionam Todos com icacls
, mas não consigo exibir a ACL real:
icacls \directory /findSID *S-1-1-0 /t
Olhando para a documentação subinacl
e vários resultados do google, parece que posso usar / subdiretórios e / display para conseguir isso, mas ele retorna imediatamente sem resultados e sem erros:
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
A sugestão do Orbitron é ótima, mas se você quiser usar uma maneira puramente do PowerShell sem ter que instalar pstools, dê uma olhada no cmdlet select-string
. Você pode ter que canalizar o pipeline de objeto para um arquivo primeiro e depois consumi-lo com string de seleção ou pode colocar out-string
no pipeline.
Get-ChildItem -Recurse | Get-Acl | out-string -stream | select-string -pattern "everyone"