Consentire agli utenti non amministratori di avviare/arrestare un servizio Windows

Per impostazione predefinita, gli utenti comuni (non amministratori) non possono gestire i servizi di Windows ma in alcuni casi, è necessario che un utente disponga delle autorizzazioni per riavviare o gestire determinati servizi.

Supponiamo di dover concedere all’utente di dominio contoso\luser le autorizzazioni per riavviare il servizio spooler di stampa. Quando l’utente tenta di riavviare il servizio, viene visualizzato questo errore:

System error 5 has occurred. Access is denied.

Non esiste uno strumento integrato per gestire le autorizzazioni dei servizi in Windows, in questo articolo utilizzeremo SubInACL per consentire a un utente di avviare/arrestare/riavviare il servizio. SubInACL è uno strumento semplice a riga di comando che permette gestire i permessi del servizio. Ecco come concedere le autorizzazioni di riavvio per un servizio utilizzando SubInACL:

  1. Scaricare subinacl.msi da questa pagina web (https://www.microsoft.com/en-us/download/details.aspx?id=23510) e installalo sul sistema di destinazione
  2. Aprire il prompt dei comandi con privilegi elevati e posizionarsi nella directory contenente lo strumento: cd “C:\Programmi (x86)\Windows Resource Kits\Tools\”
  3. Eseguire il comando: subinacl.exe /service Spooler /grant=contoso\tuser=PTO

Le opziono PTO servono per mettere in pausa e riprendere il servizio (P), Avviare il Servizio (T), Fermare il servizio (O), qui di seguito l’elenco completo delle opzioni:

F : Full Control
R : Generic Read
W : Generic Write
X : Generic eXecute
L : Read controL
Q : Query Service Configuration
S : Query Service Status
E : Enumerate Dependent Services
C : Service Change Configuration
T : Start Service
O : Stop Service
P : Pause/Continue Service
I : Interrogate Service
U : Service User-Defined Control Commands

Ora si può accedere al computer con l’utente e provare a riavviare il servizio con i comandi net stop spooler e net start spooler ,se è stato fatto tutto correttamente, il servizio dovrebbe riavviarsi.

Per revocare le autorizzazioni assegnate del servizio utilizzare l’opzione /revoke dello strumento subinacl.exe. Per esempio

subinacl.exe /service Spooler /revoke=contoso\ltuser