Los permisos heredados no se actualizan automáticamente al mover carpetas

En este artículo se proporciona una solución a un problema en el que los permisos heredados no se actualizan automáticamente al mover carpetas.

Se aplica a: Windows Server 2012 R2
Número de KB original: 320246

Síntomas

Una lista de Access Control (ACL) puede mostrar permisos marcados como heredados del elemento primario, pero es posible que el propio elemento primario no tenga estos permisos configurados en su ACL. Este síntoma puede producirse aunque la herencia todavía esté habilitada. Cualquier cambio posterior en la ACL de la carpeta primaria hace que la ACL del elemento secundario reciba los permisos heredados. Además, cualquier intento de cambiar la ACL del elemento secundario hace que se aplique la herencia (a menos que el cambio marque la ACL como protegida de la herencia). Este comportamiento puede ser sorprendente si el estado de herencia no se hubiera anotado antes de empezar a editar la ACL.

Nota:

Este comportamiento no puede deberse al movimiento de una carpeta cuando se ejecuta un equipo basado en Windows Vista. La operación de movimiento ahora funciona porque la carpeta o el archivo pueden heredar la ACL de la carpeta o el archivo de destino. La carpeta o archivo también tiene permisos marcados como heredados del elemento primario. Se trata de un cambio por diseño de Windows XP a Windows Vista y Windows Server 2008.

Causa

Este comportamiento puede deberse al movimiento de una carpeta. Al mover una carpeta, la ACL no cambia y los permisos heredados no se actualizan. Tenga en cuenta que mover en el contexto de este artículo siempre significa moverse dentro del mismo volumen.

Al mover un archivo o carpeta, la ACL también se mueve y no se cambia de ninguna manera. Incluso cuando la herencia está habilitada para esta carpeta, los permisos heredados no se actualizan automáticamente. La ACL se actualizará la próxima vez que cambie los permisos y esto obliga al elemento primario a propagar sus permisos.

Este comportamiento también puede deberse a lo siguiente:

  • Establecer los permisos de una carpeta primaria mediante CACLS no se propaga a las subcarpetas. La opción /T no significa propagar los derechos mediante la herencia, sino sobrescribir todas las ACL.

  • Establecer los permisos de una carpeta primaria mediante una API que no propaga automáticamente la herencia (como Adssecurity.dll).

  • Restaurar desde una copia de seguridad a otra ubicación.

Solución

Para evitar cambios inesperados en los permisos, establezca la ACL del archivo o carpeta en protected antes de moverse cuando desee mantener la configuración. De lo contrario, actualice manualmente la ACL del archivo o carpeta movidos mediante el editor de ACL del explorador. Deshabilite y vuelva a habilitar la herencia para forzar que la ACL se actualice con los permisos heredados correctos. También puede usar un VBScript para automatizar este proceso.

Estado

Este comportamiento es una característica del diseño de la aplicación. Este comportamiento no se produce debido a la modificación del diseño en Windows Vista.

Pasos para reproducir este comportamiento

  1. Cree una carpeta test1 con los permisos everyone:read y users:change .
  2. Cree una subcarpeta test1\sub y habilite la herencia del elemento primario (valor predeterminado). Esta carpeta debe mostrar everyone:read y users:change como permisos heredados.
  3. Cree otra carpeta test2 con solo administradores:permisos de control total .
  4. Mueva la subcarpeta a test2.
  5. Vea los permisos en test2\sub para ver everyone:read y users:change como permisos heredados, aunque el permiso primario sea administrators:full control.
  6. Agregue otro grupo o usuario (como invitado) a la ACL de concesión secundaria, por ejemplo, acceso de lectura mediante el editor de ACL del explorador. Después de hacer clic en Aplicar, se quita everyone:read y users:change , y solo se muestra el control administrators:full como permisos heredados junto al que acaba de agregar.