spl*_*its 9 windows access-control-list
在我们的几个开发人员工作站上,我们遇到了可怕的“此访问控制列表不是规范形式,因此无法修改”。当我们尝试设置某些文件夹的权限时出错。我们无法弄清楚是什么破坏了这些 ACL。
现在,我知道修复它的唯一方法是右键单击损坏的文件夹/文件,选择“属性”,然后单击“安全”选项卡。Windows 然后会注意到损坏并提供修复它。我不喜欢这个,因为它是手动的,需要用户做一些调查来找出哪个文件夹/文件损坏了。
是否有脚本或程序可以自动执行此操作?我看到它icacls有一个/verify参数,但它只是告诉我文件/文件夹上的 ACL 已损坏。它不提供修复任何东西。
您可以尝试使用一个简单的 PowerShell 脚本用另一个文件的 acl 覆盖损坏的文件 acl: get-acl path_to_file_with_known_good_acl | set-acl -path path_to_corrupt_file
我终于能够为此找到一个自动修复程序。当您调用 PowerShell 的Set-Aclcmdlet 时,它将正确重新排序 ACL:
$path = C:\Path\To\Item\With\Borked\ACL
$acl = Get-Acl $path
Set-Acl $path $acl
Run Code Online (Sandbox Code Playgroud)
当然,也有可能是目录的父目录搞砸了,所以你应该做一些遍历来找到罪魁祸首。使用icacls C:\Path\To\Item\With\Suspect\CL /verify找出是否有什么需要修复。
在我们的环境中,Cygwin 可能是罪魁祸首:当它创建目录时,它喜欢为它们提供 POSIX 风格的权限,而不是依赖 Windows 来管理文件系统安全。
| 归档时间: |
|
| 查看次数: |
23526 次 |
| 最近记录: |