Copia de permisos de seguridad de archivos
Pregunta
Estoy copiando un archivo de la carpeta A a la carpeta B y luego intento copiar los permisos del archivo. Aquí están los pasos básicos que estoy usando:
- CopyFile (source, target)
- GetNamedSecurityInfo (fuente, GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
- Imprime la fuente SD usando ConvertSecurityDescriptorToStringSecurityDescriptor
- SetNamedSecurityInfo (target, GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
- GetNamedSecurityInfo (target, GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
- Imprima la SD de destino utilizando ConvertSecurityDescriptorToStringSecurityDescriptor
En el # 3 me sale este SD:
G:S-1-5-21-1454471165-1482476501-839522115-513D:AI(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;PU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;FA;;;S-1-5-21-1454471165-1482476501-839522115-1004)
En el # 6 me sale
G:S-1-5-21-1454471165-1482476501-839522115-513D:AI(A;ID;0x1301bf;;;PU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)
La llamada a SetNamedSecurityInfo devuelve ERROR_SUCCESS, sin embargo, los resultados son el origen y el archivo de destino no tienen las mismas SD. ¿Porqué es eso? ¿Qué estoy haciendo mal aquí?
Solución
SHFileOperation
puede copiar archivos junto con sus atributos de seguridad, pero desde su otra pregunta veo que le preocupa que esto no funcione dentro de un servicio. Tal vez las siguientes discusiones de grupos de noticias le proporcionarán información útil:
Otros consejos
Robocopy del kit de herramientas del servidor http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en
Copiará todos los ajustes NTFS y ACL, también es más robusto y confiable que copiar / xcopy