En varias de nuestras estaciones de trabajo para desarrolladores, hemos recibido el temido "Esta lista de control de acceso no está en forma canónica y, por lo tanto, no se puede modificar". error cuando intentamos establecer permisos en ciertas carpetas. No hemos podido averiguar qué está corrompiendo estas ACL.
En este momento, la única forma en que sé solucionarlo es haciendo clic derecho en la carpeta / archivo dañado, elija Propiedades y haga clic en la pestaña Seguridad. Windows notará la corrupción y ofrecerá solucionarlo. No me gusta esto porque es manual y requiere que el usuario haga algunas investigaciones para descubrir qué carpeta / archivo está dañado.
¿Hay algún script o programa en algún lugar que lo haga automáticamente? Veo que icacls
tiene un /verify
parámetro, pero solo me muestra que las ACL en un archivo / carpeta están dañadas. No ofrece arreglar nada.
fuente
get-acl path_to_corrupt_file | set-acl -path ptah_to_corrupt_file
.Finalmente pude encontrar una solución automática para esto. Cuando llame al
Set-Acl
cmdlet de PowerShell , volverá a ordenar las ACL correctamente:Por supuesto, podría ser un padre del directorio que está en mal estado, por lo que debe recorrer un poco para encontrar al culpable. Úselo
icacls C:\Path\To\Item\With\Suspect\CL /verify
para averiguar si algo necesita reparación.En nuestro entorno, Cygwin es el probable culpable: cuando crea directorios, le gusta otorgar permisos de estilo POSIX sobre ellos, en lugar de confiar en Windows para administrar la seguridad del sistema de archivos.
fuente
Para mí hubo un doble problema: la regla errónea no canónica de ACL + declarada para NULL SID (WTH?). Sugiero que fue causado por la versión cygwin de git.
De todos modos, en mi caso, volver a aplicar la misma ACL no tenía ningún sentido:
Así que tuve que aplicar explícitamente ACL desde el archivo que tiene uno correcto, como lo menciona @mschneider
fuente
icacls puede arreglarlo también:
Otros comandos útiles, equivalentes a chmod 0777 FILE, chown root FILE
fuente
Este problema aparece cuando se usa Cygwin. Intenta emular los permisos de archivo POSIX sobre las ACL de Windows. Con frecuencia, esto lleva a ACL no canónicas, que son legales pero que explorer.exe no puede tratar adecuadamente .
Puede desactivar esta emulación problemática montando con la opción "noacl", por ejemplo, en
/etc/fstab
:fuente
fuente