Eseguire processi con altre credenziali

Questo è un argomento che ritorna spesso nel forum e allora cerco di riassumere le informazioni che sono venute fuori dalle varie discussioni.

Innazitutto l’esigenza viene fuori quando giustamente si opera come utente non amministratore sul proprio computer come è giusto fare, ma purtroppo alcune applicazioni scritte non seguendo le best practies sulla sicurezza possono richiedere privilegi di amministratore locale per essere eseguite. A riguardo si vedano:

Ovviamente può anche esistere il caso di un’applicazione che debba essere eseguita con privilegi di amministratore locale si pensi ad esempio ad alcuni tools di Windows Sysinternals.

In ogni caso una volta che si ha un’applicazione che richiede permissions che non sono disponibili nella sessione in cui opera l’utente perchè il developer non ha rispettato le best practies sulla sicurezza applicativa o perchè tali permissions sono realmente necessarie tocca al sysadmin gestirne la funzionalità.

Escludendo la soluzione di innalzare i privilegi con cui opera l’utente rimangono due alternative.

La prima è quella capire perchè l’applicazione richiede privilegi elevati e la risposta probabilmente sta nel fatto che accede a directory e/o a chiavi di registry per cui l’utente non ha privilegi sufficienti. Per monitorare file system e registri possono tornare utile il tool di Sysinternals Process Monitor. Può però accadere che l’applicazione utilizzi un api che richieda privilegi che l’utente non possiede, in questo caso occorre ricorrere alla seconda alternativa.

La seconda alternativa è quella di eseguire l’applicazione con le credenziali di un’altro utente che posside le permission richieste e per poterlo fare è possibile utilizzare il comando Runas o creare un collegamento per aviare tramite runas un’applicazione a riguardo si veda Create a shortcut using runas command parameters. In Windows XP e Windows 2003 Server esiste anche la funzionalità “Esegui come” da interfaccia grafica, a riguardo si vedano:

Con questa funzionalità è possibile eseguire con altre credenziali oltre ad applicazioni anche varie attivitià utili durante le varie attivita di amministrazione:

  1. Eseguire le applet di sistema da Pannello di controllo tramite l’opzione Esegui come… dall’applet o utilizzare il seguente comando:
    runas /user:DomainName\UserName “rundll32.exe shell32.dll,Control_RunDLL Appletname.cpl”
    Per ulteriori informazioni sulle applet si veda How to run Control Panel tools by typing a command.
  2. Avviare gli strumenti di amministrazione in XP tramite l’opzione Esegui come… dall’applet Strumenti di amministrazione o utilizzare il comando:
    runas /user:DomainName\UserName “mmc.exe %windir%\system32\ConsoleName.msc”
    In Windows Vista però in questo modo viene visualizzato l’errore “Per l’operazione richiesta è necessaria l’elevazione dei privilegi”, per ovviare è possibile avviare tramite runas il Prompt dei comandi (cmd.exe) e quindi avviare la console necessaria.
  3. Installare un pacchetto msi tramite il comando:
    runas /env /user:ComputerName\Administrator “msiexec /i Packagename.msi”
  4. Per gestire le stampanti è possibile aprire l’applet Stampanti e fax ed eseguire un click tenemdo premuto lo Shift, i questo modo verrà visualizzata la voce Esegui come…  image
    Lo stesso procedimento può essere usato per amministrare una stampante.
    image

Per ulteriori informazioni si veda Accesso secondario (Esegui come): avviare programmi e strumenti in un contesto amministrativo locale, nel quale viene anche discusso un metodo per avviare Esplora risorse con altre credenziali, per altre atre soluzioni si veda anche RunAs with Explorer.

Un ‘alternativa a Esegui come è ShellRunas di Mark Russinovich e Jon Schwartz, mentre per un approfondimento di queste problematica per quanto riguarda Windws Vista si veda Nuovi PowerToy per l’elevazione dei privilegi in Windows Vista.

L’approccio Esegui come…/RunAs ha però una limitazione ovvero quella di dover inserire le credenziali o almeno la password per avviare il processo e ciò può rappresentare un problema se l’utente non deve conoscere tali credenziali oppure se deve utilizzare avviare molto spesso procesi con credenziali differenti. In questo caso è possibile avvalersi di tool di terze parti come ad esempio RUNASSPC (gratuito per uso privato) che consente di avviare un processo con credenziali differenti memorizzate in forma criptata su file. Per un elenco di tool utili si veda nonadmin – Useful Tools.

Se invece si è nel caso in cui si lavora in modalità amministratore, ma per ovvie ragioni di sicurezza si desidera avviare un processo con privilegi limitati è possibile usare DropMyRights sviluppata da Michael Howard a riguardo si veda Browsing the Web and Reading E-mail Safely as an Administrator.

Di seguito alcuni mie post inerenti a questo tema: