我们的一台 Windows 服务器上有一些用户文件夹,但权限非常混乱。我想要的是对SYSTEM
所有Domain Admins
文件夹拥有完全控制权。我希望用户只对顶级文件夹(即他们的主文件夹)拥有读取权限,并对所有子文件夹和文件拥有修改权限。这可以通过 GUI 轻松实现,但我不知道如何编写脚本。
我从 PowerShell 脚本调用 icacls,因为 get-acl 和 set-acl 是一大难题。如果必须使用它们,我并不反对,但我认为调用 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 中本地执行此操作?
答案1
将脚本的第一行更改为以下内容,使其仅适用于子文件夹和文件。
icacls.exe $folder /grant "$domain\$user:(OI)(CI)(IO)(M)"
然后将其应用到顶部文件夹。
icacls.exe $folder /grant "$domain\$user:(R)"
答案2
授予可继承的修改权限,并设置不可继承的拒绝删除文件夹本身:
icacls folder /deny user:d
icacls folder /grant user:(oi)(ci)m
这赋予了他们在文件夹内的完全权限,但他们不能修改文件夹本身。
答案3
icacls $folder /c /grant $domain\$user:(OI)(CI)(X,RD,RA,REA,WD,AD,WA,WEA,DC,RC)
这将授予所有文件和子目录的修改访问权限,但不授予对 $folder 本身的删除访问权限。