我们的一台 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 语法是什么,或者我如何使用 set-acl 在 PS 中本地执行此操作?
将脚本的第一行更改为以下内容,使其仅适用于子文件夹和文件。
然后将其应用于顶级文件夹。
授予可继承的修改权限,并设置不可继承的拒绝删除文件夹本身:
这为他们提供了文件夹内的全部权限,但他们不能修改文件夹本身。
这授予对所有文件和子目录的修改访问权限,但不授予对 $folder 本身的删除访问权限。