如果我使用 ICACLS.exe 使用以下命令设置文件夹的权限
icacls "C:\Some\Directory" /grant "somedomain\someUser:(OI)(CI)F" /t
为什么需要 /t 选项?(OI)(CI) 是否会导致权限被继承到树中的所有对象C:\Some\Directory
?
更具体一点,假设在上面的例子中,我有一个目录C:\Some\Directory\Tree
。假设这个目录有不已定义显式权限。向该目录添加显式权限“somedomain\someUser:(OI)(CI)F”不会有任何效果,因为它已被继承。icacls 会这样做吗?(编辑:是的,如果你等待足够长的时间!)所以如果我知道目录树没有显式权限,我真的不需要 /t 选项(这会在包含数亿个文件的 8TB 目录树上浪费大量时间……)
答案1
在简单目录树上进行的一些实验表明:
1) (OI)(CI) 确实会导致权限被继承 - 当然是作为 DACL 中继承的 ACE,而不是显式的 ACE - 到所有子对象(假设子对象上没有禁用继承),正如人们所期望的那样。
2) /t 选项使 icacls 遍历树并向每个添加完全相同的权限子目錄作为明确的允许。
结果是,如果查看子目录的安全权限,你会看到两个相同的条目,一个是继承的权限,一个是目录显式权限设置(除非在子目录或其他中间目录上禁用继承)。
是否想要这个是另一个问题,但很可能不是。指定两次权限并不是特别有用,除非你需要防范未来的某些变化。
在大型文件系统上,这可能需要很长时间才能完成。
文档中指出“是否将它们设置为继承权限”或许是为了提醒您:
1)如果权限包含以下内容,则可能不需要将显式权限复制到所有子目录(OI)(CI)
但
2) 如果将子目录设置为不继承权限,这实际上会完成一些重要的事情:在这样的目录中,权限不会从父级继承(即继承(OI)(CI)
被抑制),但它仍然会存在,因为它被添加为明确的权限。
答案2
难道 (OI)(CI) 不会导致权限被继承吗?
不是。以下描述解释了这一点/t
:
遍历所有子文件夹以匹配文件/目录。这将把权限更改应用于所有子文件夹他们是否被设置为从父母那里继承权限。
来源伊卡克尔斯