Sur plusieurs de nos postes de travail de développeur, nous avons eu le redouté "Cette liste de contrôle d'accès n'est pas sous forme canonique et ne peut donc pas être modifiée." erreur lorsque nous essayons de définir des autorisations sur certains dossiers. Nous n'avons pas été en mesure de déterminer ce qui endommage ces listes de contrôle d'accès.
À l'heure actuelle, la seule façon de le résoudre est de cliquer avec le bouton droit sur le dossier / fichier corrompu, de choisir Propriétés et de cliquer sur l'onglet Sécurité. Windows remarquera alors la corruption et proposera de la corriger. Je n'aime pas cela car il est manuel et nécessite que l'utilisateur fasse des recherches pour déterminer quel dossier / fichier est corrompu.
Y a-t-il un script ou un programme quelque part qui le fera automatiquement? Je vois que cela icacls
a un /verify
paramètre, mais cela me montre simplement que les ACL sur un fichier / dossier sont corrompus. Il ne propose rien de réparer.
la source
get-acl path_to_corrupt_file | set-acl -path ptah_to_corrupt_file
.J'ai finalement pu trouver une solution automatisée pour cela. Lorsque vous appelez l'
Set-Acl
applet de commande de PowerShell , il réorganise correctement les listes de contrôle d'accès:Bien sûr, il pourrait s'agir d'un parent du répertoire qui est foiré, vous devriez donc faire un peu de recherche pour trouver le coupable. Utilisez
icacls C:\Path\To\Item\With\Suspect\CL /verify
pour déterminer si quelque chose doit être réparé.Dans notre environnement, Cygwin est le coupable probable: lorsqu'il crée des répertoires, il aime leur accorder des autorisations de style POSIX, au lieu de s'appuyer sur Windows pour gérer la sécurité du système de fichiers.
la source
Pour moi, il y avait un double problème: ACL non canonique + règle erronée déclarée pour NULL SID (WTH?). Je suggère que cela a été causé par la version cygwin de git.
Quoi qu'il en soit, dans mon cas, la réapplication de la même ACL n'avait aucun sens:
J'ai donc dû appliquer explicitement ACL à partir d'un fichier ayant un bon, comme mentionné par @mschneider
la source
icacls peut également le réparer:
Autres commandes pratiques, équivalent de chmod 0777 FILE, chown root FILE
la source
Ce problème apparaît lors de l'utilisation de Cygwin. Il essaie d'émuler les autorisations de fichiers POSIX sur les listes de contrôle d'accès Windows. Cela conduit fréquemment à des listes de contrôle d'accès non canoniques, qui sont légales mais ne peuvent pas être traitées correctement par explorer.exe .
Vous pouvez désactiver cette émulation problématique en montant avec l'option "noacl", par exemple dans
/etc/fstab
:la source
la source