Na kilku naszych programistycznych stacjach roboczych zaczęliśmy się bać „Ta lista kontroli dostępu nie jest w formie kanonicznej i dlatego nie można jej modyfikować”. błąd, gdy próbujemy ustawić uprawnienia do niektórych folderów. Nie byliśmy w stanie dowiedzieć się, co psuje te listy ACL.
W tej chwili jedynym sposobem, w jaki mogę to naprawić, jest kliknięcie uszkodzonego folderu / pliku prawym przyciskiem myszy, wybranie Właściwości i kliknięcie karty Zabezpieczenia. System Windows zauważy wówczas uszkodzenie i zaoferuje jego naprawę. Nie podoba mi się to, ponieważ jest to instrukcja ręczna i wymaga od użytkownika przeprowadzenia pewnych badań w celu ustalenia, który folder / plik jest uszkodzony.
Czy jest gdzieś skrypt lub program, który zrobi to automatycznie? Widzę, że icacls
ma /verify
parametr, ale po prostu pokazuje mi, że listy ACL w pliku / folderze są uszkodzone. Nie oferuje niczego do naprawy.
źródło
get-acl path_to_corrupt_file | set-acl -path ptah_to_corrupt_file
.W końcu udało mi się wymyślić zautomatyzowane rozwiązanie tego problemu. Wywołanie polecenia
Set-Acl
cmdlet programu PowerShell spowoduje prawidłowe uporządkowanie list ACL:Oczywiście może to być element nadrzędny zawalonego katalogu, więc powinieneś zrobić kilka kroków, aby znaleźć winowajcę. Użyj,
icacls C:\Path\To\Item\With\Suspect\CL /verify
aby dowiedzieć się, czy coś wymaga naprawy.W naszym środowisku Cygwin jest prawdopodobnym winowajcą: podczas tworzenia katalogów lubi nadawać im uprawnienia w stylu POSIX, zamiast polegać na systemie Windows do zarządzania bezpieczeństwem systemu plików.
źródło
Dla mnie były dwa problemy: niekanoniczna ACL + błędna reguła zadeklarowana dla NULL SID (WTH?). Sugeruję, że było to spowodowane cygwinową wersją git.
W każdym razie ponowne zastosowanie tej samej listy ACL nie miało sensu:
Więc musiałem jawnie zastosować ACL z pliku, który ma poprawny, jak wspomniano w @mschneider
źródło
icacls może to naprawić również:
Inne przydatne polecenia, odpowiednik chmod 0777 PLIK, chown root PLIK
źródło
Ten problem pojawia się podczas korzystania z Cygwin. Próbuje emulować uprawnienia do plików POSIX na listach ACL systemu Windows. Prowadzi to często do niekanonicznych list ACL, które są legalne, ale nie mogą być poprawnie rozwiązane przez explorer.exe .
Możesz wyłączyć tę problematyczną emulację, montując z opcją „noacl”, np. W
/etc/fstab
:źródło
źródło