显然我的业力是这样的:以各种非平凡的方式实现标准任务。 如果有人对问题有不同的看法-我要求进行讨论,以解决问题。
一个美好的早晨,一个有趣的任务出现了:在包含项目子文件夹和文档文件夹的不同球上向用户组分配权限。 一切都很好,并分配了一个脚本,为文件夹分配权限。 然后事实证明,这些组应该包含来自不同林的不同域的用户(
对于那些忘记了身份的用户 )。 假设球本身位于在PSI林的FB域中注册的Synology媒体上。 目标:允许另一个林中域的用户非常有选择地访问此球的内容。
一段时间后,传统知识以以下形式隐约可见:
- 2个森林:PSI森林,TG森林。

- 每个林都有3个域:PSI(ZG,PSI,FB); TG(TG,HU,KC)。
- 森林之间存在信任关系,Synology会查看所有森林中的所有安全组。
- 气球和文件夹/子文件夹必须具有具有FullControl权限的FB域管理员帐户
- 气球文件夹的名称应系统化。 管理层正在协商项目ID,因此我决定将安全组的名称分配给项目ID。
- 系统球中的项目文件夹应包含在.xlsx文件中预先准备的结构,并具有适当的访问权限(R / RW / NA,其中NA-无访问权限)

- 应该可以将一个项目的用户/组成员的权限限制为仅该项目的某些目录。 根据组成员身份,用户可能无权访问其他目录/项目。
- 创建项目文件夹时,应自动自动创建具有相应项目ID名称的相应域中的组。
ToR注释
- 建立信任关系不是传统知识的一部分
- 项目ID包含数字和拉丁字母
- 所有域的项目用户角色都有通用名称
- 在开始整个项目之前,准备一个具有文件夹和权限(访问矩阵)的.xlsx文件
- 实施项目时,可以在相应的域中创建用户组
- 通过使用标准的MS Windows管理工具来实现自动化
传统知识实施
在正式确定这些要求之后,采取了战术上的暂停以测试创建目录和为其分配权限的方法。 应该只使用PowerShell,以免使项目复杂化。 如我先前所写,脚本算法似乎非常简单:
- 注册具有从项目ID(例如,KC40587)派生的名称和在访问矩阵中指定的相应角色的组:KC40587-EN-用于工程师; KC40587-PM-用于产品经理等
- 获取创建的组的SID
- 注册项目文件夹和相应的目录集(子文件夹的列表取决于在访问矩阵中创建和定义的子文件夹)
- 根据对项目的新子目录的访问矩阵为组分配权限。
第一阶段遇到的困难:
- 缺乏对在脚本中设置访问矩阵的方式的理解(现在实现了多维数组,但是根据.xlsx文件/访问矩阵的内容寻求填充方法)

- 使用PoSH在Synology驱动器上的SMB球中设置访问权限的不可能(https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on-nas -share?forum = winserverpowershell),因此浪费了很多时间,我不得不使用icacls权限编辑实用程序来使所有内容适应脚本,这需要创建一个文本和cmd文件的中间仓库。
在当前模式下,需要为项目注册文件夹的情况下,手动控制cmd文件的执行。

事实证明,应该执行该脚本,包括在其他林中注册组(使用术语“跨域”),并且该比率不仅可以是1:1,而且可以是1:许多。

这意味着来自其他跨域的组(包括相邻的林)现在可以要求访问域的资源。 为了实现均匀性,决定在所有森林的所有服务域的OU(黑色垂直椭圆形)中创建一个对称结构。 正如他们所说,在军队中,一切都应该丑陋,但要统一:

因此,在TG域中注册80XXX项目时,脚本将执行:
1.在此域和跨域(即,其雇员必须有权访问此资源的域)中创建相应的OU(红色的水平椭圆形)。
2.用名称为<SRC_domain> <DST_domain> <ID_project>-的形式的组填充OU,其中:
- SRC_域-一个跨域,其员工将可以访问DST域资源
- DST_domain-域,实际上应该授予对其资源的访问权限,也就是说,为此开始一切
- <ID_project>-项目编号
- ROLES-访问矩阵中列出的角色名称。
3.读取所有涉及域的所有组的SID数组,并将其保存以用于随后的数据传输到确定特定项目子文件夹权限的文件中
4.生成具有一组权限的源文件(参数/还原),以在可执行文件模式“ icacKC” \\ as-nasNN \ KC \ Projects“ /还原C:\ Temp \ KC \ KC40XX \ KC40XX.txt”中使用icacKC实用程序
5.创建一个CMD文件,该文件结合了所有项目文件夹的所有已启动icacls

如前所述,可执行文件是手动启动的,执行结果的评估也是手动执行的。
最终遇到的困难:
- 如果项目文件夹中已经装有大量文件,那么对可用卷执行icacls命令可能会花费大量时间,并且在某些情况下会导致失败(例如,如果文件路径较长);
- 除了/ restore选项外,我还必须在/ reset选项中添加几行,以防万一没有创建文件夹,而是从先前存在的文件夹中转移了文件夹,并且继承权已从根目录关闭;
- 创建组的脚本的一部分必须在每个目录林的任意dc上执行,这个问题与每个树的管理帐户有关。
一般结论:市场上还没有具有类似功能的实用程序,这很奇怪。 在Sharepoint门户的基础上似乎可以实现这种功能。
它还提供了一个不可理解的事实,那就是无法使用PoSH实用程序在汉学设备上的文件夹上设置权限。
如果有人感兴趣,我随时可以通过在github上创建某种项目来共享脚本。