Domanda

La nostra app utilizza un componente che richiede un file di licenza nella directory con il nostro eseguibile, che sembra essere un'app .NET WinForms anche se penso che non sia rilevante per questa domanda. Se installato su alcune macchine XP Pro (solo tre su diverse centinaia finora), il componente genera un'eccezione di licenza. Quindi ho rigenerato il file di licenza e l'ho inviato al fornitore del componente (EMC Captiva), dove il venditore afferma che l'errore è dovuto al fatto che gli "Utenti" il gruppo non ha permessi di lettura sul file. L'utente che incontra l'errore sembra essere un amministratore locale, ma questo è oltre al punto in quanto sono ancora curioso della domanda più generale.

Quindi la mia domanda è: gli ACL sono memorizzati in un file in modo tale da seguire il file per tutta la sua vita, specialmente quando il file di licenza è stato generato sulla mia macchina di sviluppo (macchina 1), memorizzata in Subversion (macchina 2), estratto del controllo del codice sorgente da TeamCity (macchina 3), impacchettato in un programma di installazione da InstallShield (macchina 4) e infine distribuito sulla macchina del cliente (macchina 5) dove è stato installato da un amministratore? Che cosa succede dopo aver generato il file sulla mia macchina di sviluppo (macchina 1), caricarlo sul fornitore del componente tramite il loro sito di supporto (macchina 2) e la persona di supporto lo scarica sulla loro macchina per l'ispezione (macchina 3)?

Non lo so per certo (motivo per cui lo sto chiedendo qui), ma ho assunto che ogni macchina Windows memorizzi ACL in una directory / elenco / tabella centrale gestita da NTFS piuttosto che archiviata nel file. Cosa succede all'ACL del file originale quando viene copiato da una macchina all'altra, archiviato in Subversion, impacchettato in un MSI, ecc.? Qualcuno può indicarmi alcuni buoni riferimenti in cui posso leggere su questo?

È stato utile?

Soluzione

Gli ACL sono archiviati nella parte di una partizione NTFS che esegue tutte le operazioni idrauliche in background: la MFT (Master File Table).

L'ACL non segue un file in giro, poiché non fa parte del file (proprio come il nome del file è metadati). Il file può attraversare i confini del tipo di partizione (NTFS- > FAT), mentre l'ACL no.

Ora se sposti un file all'interno di una partizione NTFS, potresti avere l'impressione che gli ACL seguano effettivamente il file in giro. Questo perché durante uno spostamento, solo il nome file nell'MFT viene effettivamente modificato. Tutto il resto rimane lo stesso.

Se copi un file o lo sposti in un'altra partizione o computer (che in realtà è un'operazione copia + cancella), il file copiato erediterà di default le autorizzazioni del suo nuovo contenitore (solo quelli ereditabili, per essere precisi) .

Tuttavia, esistono strumenti in grado di conservare l'ACL di un file dopo un'operazione di copia (semplicemente ricreandolo sul file di destinazione dopo l'operazione di copia) anche oltre i confini della partizione o del computer. xcopy può farlo, tra gli altri.

Ma poiché un ACL può contenere SID che sono "di proprietà del dominio", una voce ACL potrebbe non essere significativa per il computer di destinazione che non fa parte dello stesso dominio (ad esempio quando si porta a casa un'unità USB in formato NTFS ). In tal caso, la voce ACL non avrà alcun effetto.

Altri SID sono "ben noti", come il "SISTEMA". SID. Questi saranno effettivamente riconosciuti oltre i confini del dominio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top