Cómo copiar permisos de una carpeta a otra con diferentes contenidos

Cómo copiar permisos de una carpeta a otra con diferentes contenidos

gracias a las respuestas disponibles aquí: sé cómo replicar el permiso de una carpeta idéntica usando icacls /save & /restoreo robocopy /MIR. Pero no puedo obligarlos a traer el mismo permiso de usuario de una carpeta a una carpeta de destino con contenido diferente. Con ìcacls /restore, la carpeta de destino aún obtiene el permiso de usuario heredado de su padre (aunque ya desactivo explícitamente la herencia).

Mi caso de uso es que tengo una carpeta de aplicaciones portátiles y se ejecutará de manera incorrecta cuando la coloque en esta subcarpeta con problemas, pero funcionará completamente cuando la coloque en la raíz de la misma unidad D:\. La ruta de mi carpeta no tiene caracteres "prohibidos" como % ^ etc., solo letras y además la ruta no es muy larga.

¿Existe alguna manera de replicar rápidamente el permiso desde una ubicación buena conocida a una carpeta de destino? Por favor ayuda.

Muchas gracias.

ilustración

Respuesta1

EDITAR:

Perdón por publicar con prisa.

Después de revisar nuevamente, aquí todo lo que encontré:

  • el robocopycomando no asigna permiso a los archivos o subcarpetas que se encuentran dentro. Por lo tanto, necesita este paso adicional (en Windows 10): Folder properties > Security tab > Advanced > Permission = Check the box at "Replace all child object permission entries with inheritable permission entries from this object"
  • Icacls /saveentonces Icacls /restorerealmente también funciona. Pero aplica el estado de herencia de carpeta. Si la "fuente" tiene la herencia habilitada, entonces la carpeta de destino también obtiene la herencia habilitada (de su padre, no del padre de origen). Por lo tanto, la "fuente" debe desactivar temporalmente la herencia de carpetas.

*)Creo que es mejor no hacer esto para anticipar que se rompa la fuente si algo sale mal o se olvida revertir todos los cambios en la "fuente".

  • No estoy realizando más pruebas con PowerShell get-acl -path | set-acl -path, pero anteriormente descubrí que funcionaba así.icacls /restore

Para mi caso de uso, elijo el comando robocopy. Especialmente después de encontrar esto.https://serverfault.com/questions/475612/replace-permission-entries-on-all-child-objects-using-icacls. No estoy probando esto, solo imaginé que se puede combinar en un comando cmd de una línea como:

robocopy d:\source_folder_permission destination_folder_permission /e /sec /secfix /xc /xn /xo /xx /xl & icacls "destination_folder_permission\*" /q /c /t /reset

Eso es todo. Salud :)


¡Finalmente! Encontré la respuesta del sueño. gracias a este chicoHacer frente a permisos solo usando Robocopy

Este es el robocopycomando de ejemplo:

robocopy d:\source_folder_permission destination_folder_permission /e /sec /secfix /xc /xn /xo /xx /xl

Lo ejecuto como administrador.

Espero que esto sea valioso para todos. ¡Buen día!

información relacionada