Copia delle autorizzazioni di sicurezza dei file
Domanda
Sto copiando un file dalla cartella A alla cartella B e quindi sto provando a copiare le autorizzazioni del file. Ecco i passaggi di base che sto usando:
- CopyFile (sorgente, destinazione)
- GetNamedSecurityInfo (fonte, GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
- Stampa l'origine SD utilizzando ConvertSecurityDescriptorToStringSecurityDescriptor
- SetNamedSecurityInfo (target, GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
- GetNamedSecurityInfo (target, GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)
- Stampa SD di destinazione utilizzando ConvertSecurityDescriptorToStringSecurityDescriptor
Al numero 3 ottengo questa 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)
Al numero 6 ottengo
G:S-1-5-21-1454471165-1482476501-839522115-513D:AI(A;ID;0x1301bf;;;PU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)
La chiamata a SetNamedSecurityInfo restituisce ERROR_SUCCESS, ma i risultati sono il file di origine e di destinazione non hanno le stesse SD. Perché? Cosa sto facendo di sbagliato qui?
Soluzione
SHFileOperation
può copiare i file insieme ai loro attributi di sicurezza, ma da l'altra tua domanda vedo che sei preoccupato che questo non funzioni all'interno di un servizio. Forse le seguenti discussioni sui newsgroup forniranno alcune informazioni utili per te:
Altri suggerimenti
Robocopy dal kit di strumenti del server http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en
Copia tutti i settig e gli ACL NTFS, è anche più robusto e affidabile di copia / xcopy