Powershell

Windows 等效於“chmod -R aw”

  • May 29, 2019

什麼是 Windows 等效於“chmod -R aw”以遞歸方式刪除目錄的寫權限?棘手的部分是讓其餘權限保持不變(例如,如果 subfolderA 只能由 groupA 讀取,則不要向所有人打開文件夾權限)。

我想說沒有“等效”的方式,因為Windows 上的訪問控制設計與Linux 上的完全不同。

無論如何,您可以使用icacls命令、PowerShell 腳本、VBScript 等來實現類似的效果。

對於每個文件,都可以為使用者或組附加授予規則和拒絕規則。並且拒絕規則會覆蓋授予規則。因此,根據文件上現有的 ACL 配置,您可能有不同的方法。例如:

  1. 使用者繼承讀寫權限:添加規則拒絕寫入
  2. 使用者繼承讀取權限並且文件上已經存在允許寫入的規則:只需刪除允許寫入規則

這是案例 1 的範例,它使用以下命令添加拒絕一堆寫權限的規則icacls

icacls C:\myFolder /deny UserOrGroup:(WD,AD,WDAC,WO,WEA,WA,DE,DC) /T

要為多個使用者/組添加規則,您需要在批處理腳本中使用循環包裝它。

由於您在問題中標記了 powershell,因此類似於上述icacls範例的 PowerShell 腳本是:

$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("UserOrGroup", "DeleteSubdirectoriesAndFiles, Write, Delete, ChangePermissions, TakeOwnership", "Deny")

Get-ChildItem 'C:\myFolder' -Recurse | ForEach-Object {
   $acl = Get-Acl $_.FullName
   $acl.AddAccessRule($rule)
   Set-Acl $_.FullName $acl
}

PowerShell 更複雜,但提供了更大的靈活性。例如,您可以從文件/文件夾的現有規則中獲取使用者/組,並動態添加拒絕規則。

注意:您可能可以在serverfalultsuperuserstackoverflow中找到更多相關的問題和範例,其中包含“windows chmod”、“powershell acl”、“icacls”等關鍵字。

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