Diritti di sicurezza e accesso degli oggetti di sincronizzazione

Il modello di sicurezza di Windows consente di controllare l'accesso agli oggetti timer di evento, mutex, semaforo e timer in attesa. Le code timer, le variabili interlock e gli oggetti di sezione critici non sono a protezione diretta. Per altre informazioni, vedere Modello di controllo di accesso.

È possibile specificare un descrittore di sicurezza per un oggetto di sincronizzazione interprocesso quando si chiama la funzione CreateEvent, CreateMutex, CreateSemaphore o CreateWaitableTimer . Se si specifica NULL, l'oggetto ottiene un descrittore di sicurezza predefinito. Gli elenchi di controllo di accesso (ACL) nel descrittore di sicurezza predefinito per un oggetto di sincronizzazione provengono dal token primario o di rappresentazione dell'autore.

Per ottenere o impostare il descrittore di sicurezza di un evento, un mutex, un semaforo o un oggetto timer in attesa, chiamare le funzioni GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo o SetSecurityInfo.

Gli handle restituiti da CreateEvent, CreateMutex, CreateSemaphore e CreateWaitableTimer hanno accesso completo al nuovo oggetto. Quando si chiamano le funzioni OpenEvent, OpenMutex, OpenSemaphore e OpenWaitableTimer , il sistema controlla i diritti di accesso richiesti rispetto al descrittore di sicurezza dell'oggetto.

I diritti di accesso validi per gli oggetti di sincronizzazione interprocesso includono i diritti di accesso standard e alcuni diritti di accesso specifici dell'oggetto. Nella tabella seguente sono elencati i diritti di accesso standard usati da tutti gli oggetti.

Valore Significato
DELETE (0x00010000L) Obbligatorio per eliminare l'oggetto.
READ_CONTROL (0x00020000L) Necessario per leggere le informazioni nel descrittore di sicurezza per l'oggetto, non incluse le informazioni contenute in SACL. Per leggere o scrivere SACL, è necessario richiedere il diritto di accesso ACCESS_SYSTEM_SECURITY . Per altre informazioni, vedere SACL Access Right.
SYNC (0x00100000L) Diritto di utilizzare l'oggetto per la sincronizzazione. Ciò consente a un thread di attendere fino a quando l'oggetto non si trova nello stato segnalato.
WRITE_DAC (0x00040000L) Obbligatorio modificare l'elenco dati nel descrittore di sicurezza per l'oggetto.
WRITE_OWNER (0x00080000L) Obbligatorio per modificare il proprietario nel descrittore di sicurezza per l'oggetto.

 

Nella tabella seguente sono elencati i diritti di accesso specifici dell'oggetto per gli oggetti evento. Questi diritti sono supportati oltre ai diritti di accesso standard.

Valore Significato
EVENT_ALL_ACCESS (0x1F0003 ) Tutti i diritti di accesso possibili per un oggetto evento. Usare questo diritto solo se l'applicazione richiede l'accesso oltre a quello concesso dai diritti di accesso standard e EVENT_MODIFY_STATE. L'uso di questo diritto di accesso aumenta la possibilità che l'applicazione venga eseguita da un amministratore.
EVENT_MODIFY_STATE (0x0002 ) Modificare l'accesso allo stato, necessario per le funzioni SetEvent, ResetEvent e PulseEvent.

 

Nella tabella seguente sono elencati i diritti di accesso specifici dell'oggetto per gli oggetti mutex. Questi diritti sono supportati oltre ai diritti di accesso standard.

Valore Significato
MUTEX_ALL_ACCESS (0x1F0001 ) Tutti i diritti di accesso possibili per un oggetto mutex. Usare questo diritto solo se l'applicazione richiede l'accesso oltre a quello concesso dai diritti di accesso standard. L'uso di questo diritto di accesso aumenta la possibilità che l'applicazione venga eseguita da un amministratore.
MUTEX_MODIFY_STATE (0x0001 ) Riservato per utilizzi futuri.

 

Nella tabella seguente sono elencati i diritti di accesso specifici dell'oggetto per gli oggetti semafori. Questi diritti sono supportati oltre ai diritti di accesso standard.

Valore Significato
SEMAPHORE_ALL_ACCESS (0x1F0003 ) Tutti i diritti di accesso possibili per un oggetto semaforo. Usare questo diritto solo se l'applicazione richiede l'accesso oltre a quello concesso dai diritti di accesso standard e SEMAPHORE_MODIFY_STATE. L'uso di questo diritto di accesso aumenta la possibilità che l'applicazione venga eseguita da un amministratore.
SEMAPHORE_MODIFY_STATE (0x0002 ) Modificare l'accesso allo stato, necessario per la funzione ReleaseSemaphore .

 

Nella tabella seguente sono elencati i diritti di accesso specifici dell'oggetto per gli oggetti timer in attesa. Questi diritti sono supportati oltre ai diritti di accesso standard.

Valore Significato
TIMER_ALL_ACCESS (0x1F0003 ) Tutti i diritti di accesso possibili per un oggetto timer in attesa. Usare questo diritto solo se l'applicazione richiede l'accesso oltre a quello concesso dai diritti di accesso standard e TIMER_MODIFY_STATE. L'uso di questo diritto di accesso aumenta la possibilità che l'applicazione venga eseguita da un amministratore.
TIMER_MODIFY_STATE (0x0002 ) Modificare l'accesso allo stato, necessario per le funzioni SetWaitableTimer e CancelWaitableTimer .
TIMER_QUERY_STATE (0x0001 ) Riservato per utilizzi futuri.

 

Per leggere o scrivere SACL di un oggetto di sincronizzazione interprocesso, è necessario richiedere il diritto di accesso ACCESS_SYSTEM_SECURITY . Per altre informazioni, vedere Elenchi di controllo di accesso (ACL) e SACL Access Right.