Windows
使用 icacls 對“所有子文件夾和文件”授予修改權限,但僅將讀取權限授予頂級文件夾
我們的其中一台 Windows 伺服器上有一些使用者文件夾,它有一些相當糟糕的權限。我想要它
SYSTEM
並Domain 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
這為他們提供了文件夾內的全部權限,但他們不能修改文件夾本身。