我们的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)'
授予可inheritance的修改权限,并设置不可删除的拒绝来删除文件夹本身:
icacls folder /deny user:d icacls folder /grant user:(oi)(ci)m
这给了他们在文件夹内的完整权限,但他们不能修改文件夹本身。
icacls $folder /c /grant $domain\$user:(OI)(CI)(X,RD,RA,REA,WD,AD,WA,WEA,DC,RC)
这会授予对所有文件和子目录的MODIFY访问权限,但不会删除对$文件夹本身的访问权限。