Windows

使用 icacls 對“所有子文件夾和文件”授予修改權限,但僅將讀取權限授予頂級文件夾

  • April 17, 2019

我們的其中一台 Windows 伺服器上有一些使用者文件夾,它有一些相當糟糕的權限。我想要它SYSTEMDomain Admins完全控制所有文件夾。我希望使用者只讀頂級文件夾(這是他們的主文件夾)並修改所有子文件夾和文件。這可以通過 GUI 輕鬆完成,但我不知道如何編寫腳本。

我從我的 PowerShell 腳本中呼叫 icacls,因為 get-acl 和 set-acl 是主要的 PITA。如果一定要用的話,我並不反對,但我想呼叫icacls會更容易一些。這是我必須到目前為止的相關程式碼:

icacls.exe $folder /grant '$domain\$user:(OI)(CI)(M)'
icacls.exe $folder /grant 'SYSTEM:(OI)(CI)(F)'
icacls.exe $folder /grant '$domain\domain admins:(OI)(CI)(F)'

如您所見,我正在對使用者進行修改icacls.exe $folder /grant '$domain\$user:(OI)(CI)(M)'。我不知道如何使修改僅適用於子文件夾和文件,同時授予頂級文件夾只讀權限。

所需的權限結構如下所示(只是為了清楚起見):

-Users  
--M  
---Marra (read only to me)  
----Documents (Modify)  
----Scripts(Modify)  
----Etc (Modify)  

什麼是正確的 icacls 語法,或者我如何在 PS 中使用 set-acl 本地執行它?

將腳本的第一行更改為以下內容,使其僅適用於子文件夾和文件。

icacls.exe $folder /grant "$domain\$user:(OI)(CI)(IO)(M)"

然後將其應用於頂部文件夾。

icacls.exe $folder /grant "$domain\$user:(R)"

授予可繼承的修改權限,並設置不可繼承的拒絕以刪除文件夾本身:

icacls folder /deny  user:d
icacls folder /grant user:(oi)(ci)m

這為他們提供了文件夾內的全部權限,但他們不能修改文件夾本身。

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