我在 NTFS 文件系统上有一个巨大的目录 (即,顶级目录包含数千万或数亿个后代节点,文件节点的深度平均约为三级)我需要更改权限。具体来说,我需要授予新用户(或组)对目录树中所有内容的只读访问权限。
最明显的地方是在 Windows 资源管理器中执行此操作,方法是右键单击顶级目录并转到目录属性窗口的安全选项卡。但是,当尝试在那里执行这些显而易见的操作时,Windows 资源管理器似乎很兴奋地递归遍历整个目录树并尝试修改树中每个节点的权限。对于如此大的目录来说,这是极其低效的!
有人可以提供一些无需这种递归下降即可更改权限的技巧吗?我需要在 GUI 中单击某些特定内容吗?我需要使用命令行工具吗?这可能是由于之前的系统管理员对该目录中的权限做了一些奇怪的事情导致的吗?
我还需要启用网络共享,并让用户/组通过网络挂载目录。我还没有尝试过,所以我不知道当我尝试启用共享时是否会出现类似的麻烦。
如果重要的话,这是在 Windows 2008 Server 上。
编辑:人们是对的,将权限授予域组而不是特定帐户可能更有意义,所以我在上面提到了这一点(无论如何,这就是我正在做的事情。我不知道为什么我在原始问题中特别询问添加用户。抱歉,我很粗心)。但当然,将组添加到文件夹的权限列表并不比添加用户更快(所有现有组均未被分配只读权限)。
答案1
在这种情况下,不需要处理 NTFS 权限。
只需创建到顶级目录的共享,然后将用户或组添加到具有只读(或如果您想要写入)权限的共享中。
即使 Everyone 对顶级目录具有完全控制 NTFS 权限,最严格的许可(共享或 NTFS) 将被使用。
答案2
如果您希望用户对文件夹及其所有子文件夹拥有读取权限,则还必须更改子文件夹的权限。听起来继承已经设置好了,您只是不想等待此继承传播到所有子对象。除了等待之外,您唯一能做的就是将用户添加到具有适当权限的现有组(假设存在这样的组)。
答案3
没有快速的方法可以做到这一点。Explorer 会愉快地花上几个小时(几天?)将新权限应用于每个文件和文件夹(如果设置了继承)。
启用共享要容易得多,用户只需要至少具有共享的读取权限。底层 NTFS 权限将决定用户实际上可以做什么。请注意,如果共享权限是只读的,那么即使 NTFS 安全性设置为修改 (r/w),这也是最大访问权限。
答案4
根据您的使用情况,在紧急情况下您可能能够设置权限然后取消。
我需要向包含数百万个文件的高级目录添加特定权限,这需要一段时间。在我的特定情况下,结构中有一个特定目录需要尽快添加权限,而等待很长时间并不是一个可接受的选择。我能够通过首先向所需文件夹添加特定权限来克服这个问题,尽管这也需要很长时间才能传播,但我只需在它开始后立即单击“取消”。这样做会警告您将使权限处于不一致的状态,但它确实使我需要的一个目录具有适当的权限。然后我转到更高级别的目录并在那里设置权限并让它放手......
诀窍在于“取消”并不会撤消已经执行的操作,它只是停止传播。