您如何修复公司文件共享的损坏或被阻止的权限?

ewa*_*all 8 windows file-permissions

最近,我一直在与我们的一位存储人员合作开展一个项目,该项目涉及对公司多年来使用的大文件共享进行一些审查。通常,由于以下一种或多种原因,我们会遇到无法访问的目录或文件(使用域管理员帐户):

  • 损坏的 ACL
  • Administrators 组(或 SYSTEM 用户)的访问权限已被撤销或拒绝
  • 文件名 + 路径太长(超出MAX_PATH

有一些工具可以在这些情况下提供帮助,它们来自 Microsoft(例如 TAKEOWN.EXE 和 ICALCS.EXE)或第三方(例如SETACL.EXE)。有时需要其他技巧,例如使用PSEXEC.EXE在 SYSTEM 帐户下运行命令之一。即使只是弄清楚要做什么和按什么顺序做也是一个挑战......

例如,我希望能够使用这样的流程对其进行故障排除:

  1. 路径是否太长?如果是这样,请使用\\?\前缀构建路径,然后再次测试。
  2. ACL 是否损坏?如果是这样,请正确重新排序 ACE 并删除任何未知数,然后再次测试。
  3. 管理员组是否拒绝访问?如果是这样,请取得所有权,为 Administrators 组和 SYSTEM 帐户添加回权限,然后再次测试。
  4. 它仍然失败吗?如果是,请删除所有 ACE 并仅应用继承的权限,然后再次检查。(这是最后的手段,因为它经常打开本应更具限制性的权限。)
  5. 是目录吗?如果是这样,那么该过程需要对内部文件递归地继续......

当我们有数百个目录需要修复时,手动执行上述步骤很痛苦,而且不合理。我曾尝试编写脚本来帮助解决这些问题,但发现很难让脚本对其做出的决定“智能”,因此通常更容易执行粗略的修复方法,例如仅恢复继承的权限。

任何人都可以推荐其他有助于此过程的软件和/或脚本吗?或者,您如何解决此类权限问题?

the*_*bit 2

我建议使用fileacl - 它能够使用 SeBackupPrivelege 设置 ACL,因此不需要您运行命令的用户拥有更改给定对象上的 ACL 的权限。此外,它本身支持 NTFS-5 后的继承功能,并且易于编写脚本,因此通过一些包装脚本逻辑,它应该可以满足您的需求。