Condividi tramite


Privilegi

Un privilegio è il diritto di un account, ad esempio un account utente o gruppo, di eseguire varie operazioni correlate al sistema nel computer locale, ad esempio arrestare il sistema, caricare i driver di dispositivo o modificare l'ora di sistema. I privilegi differiscono dai diritti di accesso in due modi:

  • Privilegi controllano l'accesso alle risorse di sistema e alle attività correlate al sistema, mentre i diritti di accesso controllano l'accesso a oggetti a protezione diretta.
  • Un amministratore di sistema assegna privilegi agli account utente e di gruppo, mentre il sistema concede o nega l'accesso a un oggetto a protezione diretta in base ai diritti di accesso concessi negli ACL dell'oggetto.

Ogni sistema dispone di un database account che archivia i privilegi detenuti dagli account utente e di gruppo. Quando un utente accede, il sistema produce un token di accesso che contiene un elenco dei privilegi dell'utente, inclusi quelli concessi all'utente o ai gruppi a cui appartiene l'utente. Si noti che i privilegi si applicano solo al computer locale; un account di dominio può avere privilegi diversi in computer diversi.

Quando l'utente tenta di eseguire un'operazione con privilegi, il sistema controlla il token di accesso dell'utente per determinare se l'utente dispone dei privilegi necessari e, in tal caso, verifica se i privilegi sono abilitati. Se l'utente non riesce a eseguire questi test, il sistema non esegue l'operazione.

Per determinare i privilegi mantenuti in un token di accesso, chiamare la funzioneGetTokenInformation, che indica anche quali privilegi sono abilitati. La maggior parte dei privilegi è disabilitata per impostazione predefinita.

L'API Di Windows definisce un set di costanti stringa, ad esempio SE_ASSIGNPRIMARYTOKEN_NAME, per identificare i vari privilegi. Queste costanti sono uguali in tutti i sistemi e sono definite in Winnt.h. Per una tabella dei privilegi definiti da Windows, vedere Costanti privilegio. Tuttavia, le funzioni che ottengono e modificano i privilegi in un token di accesso usano il tipoLUID per identificare i privilegi. I valori LUID per un privilegio possono differire da un computer a un altro e da un avvio a un altro nello stesso computer. Per ottenere il LUID corrente che corrisponde a una delle costanti stringa, usare la funzioneLookupPrivilegeValue. Utilizzare la funzioneLookupPrivilegeNameper convertire un LUID nella costante stringa corrispondente.

Il sistema fornisce un set di nomi visualizzati che descrivono ognuno dei privilegi. Questi sono utili quando è necessario visualizzare una descrizione di un privilegio per l'utente. Utilizzare la funzioneLookupPrivilegeDisplayNameper recuperare una stringa di descrizione corrispondente alla costante stringa per un privilegio. Ad esempio, nei sistemi che usano l'inglese degli Stati Uniti, il nome visualizzato per il privilegio SE_SYSTEMTIME_NAME è "Cambia l'ora di sistema".

È possibile usare la funzionePrivilegeCheckper determinare se un token di accesso contiene un set specificato di privilegi. Ciò è utile principalmente per le applicazioni server che rappresentano un client.

Un amministratore di sistema può usare strumenti di amministrazione, ad esempio User Manager, per aggiungere o rimuovere privilegi per gli account utente e di gruppo. Gli amministratori possono usare le funzioni(LSA) dell'autorità di sicurezza localea livello di codice per usare i privilegi. Le LsaAddAccountRights e LsaRemoveAccountRights funzioni aggiungono o rimuovono privilegi da un account. La funzione LsaEnumerateAccountRights enumera i privilegi mantenuti da un account specificato. La funzione LsaEnumerateAccountsWithUserRight enumera gli account che contengono un privilegio specificato.

costanti di autorizzazione

l'abilitazione e la disabilitazione dei privilegi in C++