在 Windows 2003 上为每个人查找具有写入/完全控制权限的文件/文件夹

Jos*_* Y. 3 windows-server-2003 icacls

试图清理这个带有 PHP CGI 服务器的 IIS6 的权限,似乎有几个文件/文件夹对每个人都有写权限。(您可能会反复猜测正在发生的事情。)

所以,基本上,我正在寻找相当于 find $directory -perm 777 -exec ls -ld {} \;

我可以做第一部分,列出提到每个人的文件icacls,但似乎无法显示实际的 ACL:

icacls \directory /findSID *S-1-1-0 /t

查看subinacl文档和各种谷歌结果,似乎我可以使用 /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
Run Code Online (Sandbox Code Playgroud)

Wes*_*ley 5

Orbitron 的建议很棒,但是如果您想使用纯粹的 PowerShell 方式而不必安装 pstools,请查看select-stringcmdlet。您可能必须先将对象管道通过管道传输到文件,然后使用 select-string 使用它,或者您可以out-string插入管道。

Get-ChildItem -Recurse | Get-Acl | out-string -stream | select-string -pattern "everyone"

  • 在我的系统上,当在 C:\ 驱动器的根目录中运行时,命令崩溃并显示以下输出 - `Get-Acl : Attempted to perform an未授权操作。在行:1 字符:26 + Get-ChildItem -Recurse | 获取-ACL | 字符串外流 | select-string -pattern " ... + ~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-Acl], UnauthorizedAccessException +fullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetAclCommand` -- 抱歉对于错误的格式,我不知道如何在评论中使它更好。 (2认同)