Windows
從命令行修復“此訪問控制列表不是規範形式”錯誤
在我們的幾個開發人員工作站上,我們遇到了可怕的“此訪問控制列表不是規範形式,因此無法修改”。當我們嘗試對某些文件夾設置權限時出錯。我們無法弄清楚是什麼破壞了這些 ACL。
現在,我知道修復它的唯一方法是右鍵點擊損壞的文件夾/文件,選擇屬性,然後點擊安全選項卡。然後 Windows 將注意到損壞並提供修復它。我不喜歡這個,因為它是手動的,並且需要使用者進行一些調查以確定哪個文件夾/文件已損壞。
是否有某個腳本或程序可以自動執行此操作?我看到它
icacls
有一個/verify
參數,但它只是告訴我文件/文件夾上的 ACL 已損壞。它不提供修復任何東西。
我終於能夠為此找到一個自動修復程序。當您呼叫 PowerShell 的
Set-Acl
cmdlet 時,它將正確地重新排序 ACL:$path = C:\Path\To\Item\With\Borked\ACL $acl = Get-Acl $path Set-Acl $path $acl
當然,它可能是搞砸的目錄的父級,所以你應該做一些遍歷以找到罪魁禍首。用於
icacls C:\Path\To\Item\With\Suspect\CL /verify
確定是否需要維修。在我們的環境中,Cygwin 可能是罪魁禍首:當它創建目錄時,牠喜歡為它們提供 POSIX 樣式的權限,而不是依賴 Windows 來管理文件系統的安全性。