¿Por qué Windows procesa todos los objetos secundarios NTFS al cambiar la ACL de un padre?

10

¿Por qué Windows procesa todos los objetos secundarios NTFS al cambiar la ACL de un padre?

Esperaría este comportamiento si hubiera marcado la casilla "Reemplazar todos los permisos de objetos secundarios ...", pero incluso cuando esa casilla se deja sin marcar, Windows procesará a todos los elementos secundarios.

Corey
fuente
@Ben No lo hace el shell, porque la cascada de permisos heredados debe replicarse en todos los objetos secundarios con la herencia habilitada, por lo que debe hacerse incluso cuando se llama directamente a la API de Windows. FYI: los permisos se replican por motivos de rendimiento.
Andreas

Respuestas:

10

En Windows, los permisos de los archivos no se heredan dinámicamente. Es decir, cuando se intenta abrir un archivo, Windows solo mira la ACL de ese archivo y no las ACL de los directorios en el árbol que contiene el archivo. Eso significa que cuando cambia la ACL de un directorio, Windows tiene que actualizar inmediatamente los permisos de todos los archivos y subdirectorios dentro del directorio afectado.

En Windows, la configuración de herencia en una ACL no indica ninguna forma de herencia dinámica. Es solo un indicador que indica que cuando se modifica la ACL de un directorio principal, todos los archivos y subdirectorios en el árbol que tienen establecido el indicador de herencia también deben actualizarse.

Aquellos de nosotros que tengamos la edad suficiente para recordar Novell NetWare recordarán que esta fue una de las grandes diferencias con NetWare porque en NetWare la herencia de permisos es (¿era?) Dinámica. Hubo mucho debate en ese momento sobre qué enfoque era mejor, aunque la historia ha convertido el tema en discutible. Las ACL dinámicas requieren que el sistema operativo verifique las ACL de cada directorio padre en el momento en que se intenta abrir el archivo, pero cambiar las ACL es rápido. En Windows, el archivo de apertura requiere que se verifique solo una ACL, pero como ha encontrado, significa que cambiar un directorio ACL puede ser lento.

John Rennie
fuente
1
Esto tiene mucho sentido. Las ACL se leen mucho más de lo que se escriben, por lo que tiene sentido almacenar en caché el "valor heredado" para un acceso de lectura más rápido, a costa de una mayor complejidad en el caso de uso de escritura más raro.
Alexander - Restablece a Mónica el
@Alexander: Lo que no entiendo es por qué esta complejidad debe exponerse al usuario final. ¿Por qué no mentir y decirle al usuario final que "es dinámico" pero que almacena en caché las cosas internamente?
Kevin
@Kevin: porque puede llevar algo de tiempo propagar los permisos y, en ese período de tiempo, es posible que la aplicación de los permisos no suceda como espera.
davidbak
13

Cualquier objeto secundario que esté configurado para heredar sus permisos del objeto primario deberá procesarse. Los permisos definidos explícitamente en los objetos secundarios no se ven afectados.

La opción "Reemplazar permisos en todos los objetos secundarios" no solo propagará los permisos a todos los objetos secundarios sino que también eliminará y reemplazará los permisos definidos explícitamente en todos los objetos secundarios.

Appleoddity
fuente
5

De manera predeterminada, las carpetas secundarias heredan los permisos de la carpeta principal. Asumiendo el alcance predeterminado cuando agrega / modifica permisos en la carpeta principal (esta carpeta, subcarpetas y archivos), todas las carpetas secundarias se actualizarán para reflejar el cambio de permisos en la carpeta principal.

La casilla de verificación a la que se refiere es una operación "única" que eliminará todos los permisos definidos explícitamente en todas las carpetas secundarias y los reemplazará con permisos heredables del padre y volverá a habilitar la herencia de permisos en las carpetas secundarias.

joeqwerty
fuente