根据另一个现有组的权限将组添加到文件夹结构中

根据另一个现有组的权限将组添加到文件夹结构中

无论如何,感谢您阅读这段文字。

我的情况:

我有一个名为 Projects 的超级文件夹。每个子文件夹都是一个不同的项目。例如,我有 Projects\N123456 - New Coca Cola。

现在,文件夹 N123456blabla 有一组子文件夹,每个子文件夹(或几乎每个子文件夹)都具有从“母”N123456blabla 文件夹继承的特定权限。

假设基础文件夹 N123456 的访问权限被允许由具有特定权限的 AD 组“internal_users”访问。然后有一些子文件夹

SUB-A SUB-B SUB-C SUB-D SUB-E 等等

这些子文件夹下还有其它子文件夹,而这些子文件夹下还有其它子文件夹,以此类推,但为了更好地解释这个问题,我们先保持“干净”。每个 SUB 文件夹都有特定的权限:例如,SUB-A 的“internal_users”组为只读,而“project_management”组为读/写权限。

我想说,这是相当常见的情况。现在的问题是。

假设我必须在父项目文件夹 N123456 中添加一个名为“external_users”的新组。还必须添加此组在每个子文件夹中 其中“internal_users”组已经在(请记住,大多数子文件夹不会继承权限)并且它应该具有与该特定文件夹中已经存在的“internal_users”组相同的权限。

为了不手动编辑每个项目文件夹(和子文件夹)的权限,有没有办法以或多或少自动化的方式实现这一点?

简而言之,脚本应该查询文件夹 N123456 及其子文件夹,以查看组“internal_users”是否在某处应用。如果是,它应该添加向“受影响”文件夹添加“external_users”组,其权限与现有“internal_users”组在该特定文件夹中的权限相同。例如,如果 N123456 父级具有只读的“internal_users”,则应添加只读的“external_users”。如果 SUB-B 具有读/写的“internal_users”,则应添加读/写的“external_users”。如果 SUB-C 没有名为“internal_users”的组,则直接跳过该文件夹。依此类推。

您认为有办法做到吗?

对于新项目来说这不是什么问题,因为我更改了模板以创建空结构,并带有一个额外的“幽灵”空 AD 组,然后我通过 icacls 编辑 SID 将其替换为正确的组,但我无法对旧项目执行此操作,因为这次我必须添加组/组,而不是简单地替换现有的组。

编辑:我刚刚想到的一件事是将文件夹权限结构导出到 .csv,然后编辑 .csv 以添加我需要的组并将其导入回来。但我不知道如何在 Excel 中批量复制一列中包含特定文本的行,同时更改复制行的一列(具有组名称的列)的文本。

编辑 2:因为无法使用 icacls 来实现它(即使知道 SID,也无法简单地将组添加到导出的 icacls txt 文件中)我想到这个:

  1. 我将文件夹和子文件夹的权限结构导出到 .csv 文件中。
  2. 现在,由于我必须进行附加操作,并且“幸运的是”我必须添加的新组将具有与现有组相同的权限,因此我创建了 .csv 文件的副本。
  3. 我通过查找并将“internal_users”组替换为“external_users”组来编辑副本。
  4. 我将复制文件的所有行复制粘贴到原始文件中。
  5. 然后我还会有很多无用的重复行,但我会使用 N++ 函数来删除它们。
  6. 现在我应该有一个具有原始权限和新权限的新 .csv 文件。
  7. 理论上,剩下要做的就是将 .csv 导入回原始文件夹。这引出了一个新问题:如何将文件夹权限导出到 .csv 中,以及如何在编辑后重新导入文件,覆盖实际权限?我找到了很多导出权限结构的方法,但我不太明白如何在编辑后将其重新导入。这仍然需要大量的手动工作,但比逐个编辑每个项目文件夹和子文件夹要少得多。

谢谢!

相关内容