Perché Windows elabora tutti gli oggetti figlio NTFS quando si modifica l'ACL di un genitore?


10

Perché Windows elabora tutti gli oggetti figlio NTFS quando si modifica l'ACL di un genitore?

Mi sarei aspettato questo comportamento se avessi selezionato la casella "Sostituisci tutte le autorizzazioni degli oggetti figlio ...", ma anche quando quella casella è deselezionata, Windows elaborerà tutti i bambini.


@Ben Non viene eseguito dalla shell, poiché la cascata di autorizzazioni ereditate deve essere replicata su tutti gli oggetti figlio con l'ereditarietà abilitata, quindi deve essere eseguita anche quando si chiama direttamente l'API di Windows. Cordiali saluti: le autorizzazioni vengono replicate per motivi di prestazioni.
Andreas,

Risposte:


10

In Windows le autorizzazioni per i file non vengono ereditate dinamicamente. Cioè, quando si tenta di aprire un file, Windows esamina solo l'ACL di quel file e non gli ACL delle directory nella struttura che contiene il file. Ciò significa che quando si modifica l'ACL di una directory, Windows deve aggiornare immediatamente le autorizzazioni di tutti i file e sottodirectory all'interno della directory interessata.

In Windows l' impostazione di ereditarietà in un ACL non indica alcuna forma di ereditarietà dinamica. È solo un flag per indicare che quando viene modificato l'ACL di una directory padre, è necessario aggiornare anche tutti i file e le sottodirectory dell'albero che hanno il flag di ereditarietà impostato.

Quelli di noi abbastanza grandi da ricordare Novell NetWare ricorderanno che questa era una delle grandi differenze rispetto a NetWare perché in NetWare l'eredità delle autorizzazioni è (era?) Dinamica. All'epoca si discusse molto su quale approccio fosse migliore, sebbene la storia abbia reso controverso il problema. Gli ACL dinamici richiedono che il sistema operativo controlli gli ACL di ogni directory principale nel momento in cui si tenta di aprire il file, ma la modifica degli ACL è rapida. In Windows l'apertura del file richiede il controllo di un solo ACL, ma come hai trovato significa che cambiare una directory ACL può essere lento.


1
Questo ha perfettamente senso. Gli ACL vengono letti molto più di quanto siano scritti, quindi ha senso memorizzare nella cache il "valore ereditato" per un accesso più veloce alla lettura, a scapito di una maggiore complessità nel caso di utilizzo in scrittura più raro.
Alexander - Ripristina Monica il

@Alexander: Quello che non capisco è perché questa complessità debba essere esposta all'utente finale. Perché non mentire e dire all'utente "è dinamico", ma memorizzare nella cache le cose internamente?
Kevin,

@Kevin - perché può richiedere del tempo per propagare le autorizzazioni e in quel periodo di tempo l'applicazione delle autorizzazioni potrebbe non avvenire come previsto?
David

13

Qualsiasi oggetto figlio configurato per ereditare le sue autorizzazioni dall'oggetto padre dovrà essere elaborato. Le autorizzazioni definite esplicitamente sugli oggetti figlio non sono interessate.

L'opzione "Sostituisci le autorizzazioni su tutti gli oggetti figlio" non solo propagherà le autorizzazioni a tutti gli oggetti figlio, ma rimuoverà e sostituirà anche qualsiasi autorizzazione definita in modo esplicito su tutti gli oggetti figlio.


5

Per impostazione predefinita, le cartelle secondarie ereditano le autorizzazioni dalla cartella principale. Supponendo l'ambito predefinito quando si aggiungono / modificano le autorizzazioni nella cartella principale (questa cartella, sottocartelle e file), tutte le cartelle secondarie verranno aggiornate per riflettere la modifica delle autorizzazioni nel padre.

La casella di controllo a cui ti riferisci è un'operazione "una tantum" che rimuoverà tutte le autorizzazioni esplicitamente definite su tutte le cartelle figlio e le sostituirà con autorizzazioni ereditabili dal padre e riattiverà l'ereditarietà delle autorizzazioni nelle cartelle figlio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.