Auf mehreren unserer Entwickler-Workstations wurde die gefürchtete Meldung "Diese Zugriffssteuerungsliste ist nicht in kanonischer Form und kann daher nicht geändert werden." Fehler, wenn wir versuchen, Berechtigungen für bestimmte Ordner festzulegen. Wir konnten nicht herausfinden, was diese ACLs beschädigt.
Derzeit kann ich das Problem nur beheben, indem ich mit der rechten Maustaste auf den beschädigten Ordner / die beschädigte Datei klicke, Eigenschaften auswähle und auf die Registerkarte Sicherheit klicke. Windows wird dann die Beschädigung bemerken und anbieten, sie zu beheben. Ich mag das nicht, weil es manuell ist und der Benutzer einige Untersuchungen durchführen muss, um herauszufinden, welcher Ordner / welche Datei beschädigt ist.
Gibt es irgendwo ein Skript oder Programm, das dies automatisch erledigt? Ich sehe, dass dies icacls
einen /verify
Parameter hat, aber es zeigt mir nur, dass die ACLs in einer Datei / einem Ordner beschädigt sind. Es bietet nichts an, um etwas zu reparieren.
quelle
get-acl path_to_corrupt_file | set-acl -path ptah_to_corrupt_file
.Ich konnte endlich eine automatisierte Lösung dafür finden. Wenn Sie das
Set-Acl
Cmdlet von PowerShell aufrufen, werden die ACLs korrekt neu angeordnet:Natürlich könnte es sich um ein übergeordnetes Element des Verzeichnisses handeln, das durcheinander gebracht wurde. Sie sollten also einige Durchgänge durchführen, um den Schuldigen zu finden. Verwenden Sie
icacls C:\Path\To\Item\With\Suspect\CL /verify
diese Option, um herauszufinden, ob etwas repariert werden muss.In unserer Umgebung ist Cygwin der wahrscheinliche Schuldige: Wenn es Verzeichnisse erstellt, erteilt es ihnen gerne Berechtigungen im POSIX-Stil, anstatt sich bei der Verwaltung der Dateisystemsicherheit auf Windows zu verlassen.
quelle
Für mich gab es doppelte Probleme: Nicht-kanonische ACL + fehlerhafte Regel für NULL SID (WTH?) Deklariert. Ich schlage vor, es wurde durch die Cygwin-Version von Git verursacht.
In meinem Fall ergab das erneute Anwenden derselben ACL keinen Sinn:
Also musste ich explizit ACL aus einer Datei mit der richtigen anwenden, wie von @mschneider erwähnt
quelle
icacls kann es auch beheben:
Andere nützliche Befehle, äquivalent zu chmod 0777 FILE, chown root FILE
quelle
Dieses Problem tritt bei Verwendung von Cygwin auf. Es wird versucht, POSIX-Dateiberechtigungen über Windows-ACLs zu emulieren. Dies führt häufig zu nicht-kanonischen ACLs, die legal sind, aber von explorer.exe nicht ordnungsgemäß behandelt werden können .
Sie können diese problematische Emulation deaktivieren , indem Sie mit der „noacl“ Option Montage, zB in
/etc/fstab
:quelle
quelle