Security

在 ACL 中查找具有特定使用者或組的 NTFS 中的所有文件

  • August 29, 2019

執行摘要:我想查找特定使用者或組有權訪問的所有目錄和文件。

更詳細地說:我正在尋找一個命令行工具來遞歸搜尋 NTFS 目錄,以查找 DACL 中的 ACE 包含給定使用者或組的所有文件和目錄。如果我想修改權限,我會使用subinaclSetACL。我以為我也可以使用其中一種工具來搜尋和顯示,但我很難找到一個直接的解決方案。

我可以像這樣使用 SetACL:

  setacl -on C:\SOME_DIR -ot file -actn list -lst "f:tab;w:d;i:y;" -rec cont

然後 grep 為感興趣的使用者,但我想要一個更優雅的解決方案。我可能在這裡遺漏了一些東西。有任何想法嗎?

謝謝,“未知”。您的 PowerShell 腳本對我不起作用,但我拼湊了一些有用的東西。我也是新手,但經過一些試驗和錯誤:

Get-ChildItem "C:\SOME\DIR" -recurse | 
   ForEach-Object { 
       $fname = $_.FullName
       $acl = Get-Acl $fname
       foreach ($e in $acl.Access) {
           If ( -not $e.IsInherited -and
                $e.AccessControlType -eq "Allow" -and 
                $e.IdentityReference -eq "SOMEDOMAIN\Somegroup") 
           {
               Write-Host $fname
               break
           }
       }
   }

有 PowerShell 功夫的人可能會稍微清理一下。請注意,我讓它忽略繼承的條目,因為我只對知道訪問從哪裡開始感興趣。

引用自:https://serverfault.com/questions/62168