gracias a las respuestas disponibles aquí: sé cómo replicar el permiso de una carpeta idéntica usando icacls /save & /restore
o 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.
Respuesta1
EDITAR:
Perdón por publicar con prisa.
Después de revisar nuevamente, aquí todo lo que encontré:
- el
robocopy
comando 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 /save
entoncesIcacls /restore
realmente 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 robocopy
comando 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!