最近,我一直在与一个存储人员合作进行一个项目,该项目涉及对公司已使用多年的大文件共享进行一些审查。通常,由于以下一种或多种原因,我们会遇到我们无法访问的目录或文件(使用域管理员帐户):
- 损坏的ACL
- 管理员组(或SYSTEM用户)的访问权限已被撤消或拒绝
- 文件名+路径太长(超出MAX_PATH)
在Microsoft(例如TAKEOWN.EXE和ICALCS.EXE)或第三方(例如SETACL.EXE)中,有几种工具可以在这些情况下提供帮助。有时还需要其他技巧,例如使用PSEXEC.EXE在SYSTEM帐户下运行命令之一。即使只是弄清楚要执行的步骤和顺序也是一个挑战...
例如,我希望能够使用如下流程进行故障排除:
- 路径是否太长?如果是这样,请使用
\\?\
前缀构建路径,然后再次进行测试。 - ACL是否已损坏?如果是这样,请正确地对ACE重新排序并清除所有未知的内容,然后再次进行测试。
- 管理员组是否被拒绝访问?如果是这样,请取得所有权,重新添加Administrators组和SYSTEM帐户的权限,然后再次测试。
- 还是失败了吗?如果是这样,请删除所有ACE并仅应用继承的权限,然后再次检查。(这是不得已的做法,因为它经常会打开本来会更严格的权限。)
- 是目录吗?如果是这样,那么该过程需要递归地继续其中的文件...
手动执行上述步骤很麻烦,而且当我们要修复数百个目录时,这是不合理的。我尝试编写脚本来辅助这些操作,但是发现很难使脚本“聪明”地了解所做出的决定,因此,进行总修复方法(例如仅还原继承的权限)通常更容易。
谁能推荐在此过程中会有所帮助的其他软件和/或脚本?或者,您如何解决此类权限问题?