Home > IT/TLC > UAC con PowerShell: come capire il livello di privilegi d’esecuzione

UAC con PowerShell: come capire il livello di privilegi d’esecuzione

Da Windows Server 2008 ci siamo abituati alla presenza dello User Account Control (UAC) e molti programmatori hanno consigliato di disattivare questa funzionalità per garantire il funzionamento delle loro applicazioni; purtroppo anche molti ITPro hanno seguito questa strada per semplificarsi l’esistenza operativa…a discapito della sicurezza, soprattutto delle loro azioni!!

UAC-Icon

PowerShell, per progetto e per definizione, è sicuro sia per quanto inerente l’esecuzione del processo in memoria sia per l’esecuzione di cmdlets e scripts, quindi come possiamo sapere se il contesto utente che stiamo usando sfrutta o meno i privilegi elevati? La risposta è abbastanza semplice: .NET Framework!

Per verificare il nostro livello di privilegi possiamo istanziare una variabile di tipo “Security.Principal.WindowsIdentity” (per maggiori dettagli sul namespace di appartenenza di questa classe consultate MSDN). Un altro elemento da tenere in considerazione è l’enumerazione dei tipi di ruolo “Security.Principal.WindowsBuiltinRole” che ci permette di verificare, mediante il metodo IsInRole il nostro livello di privilegi per il contesto.

Con queste poche righe di script sarà possibile sapere il livello di privilegi usati per l’esecuzione della sessione corrente di PowerShell. Lo script è prelevabile a questo link: UACCheckMode.ps1

   1:  $CurrentUser = [Security.Principal.WindowsIdentity]::GetCurrent();
   2:  $bUAC = (New-Object Security.Principal.WindowsPrincipal $CurrentUser).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator);
   3:   
   4:  if($bUAC)
   5:  {
   6:      Write-Host "$($CurrentUser.Name) run PowerShell in elevated mode";
   7:  }
   8:  else
   9:  {
  10:      Write-Host "$($CurrentUser.Name) run PowerShell in user mode";
  11:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Ora non ci sono più scuse per evitare di lavorare in sicurezza e, soprattutto, verificare il livello di privilegi usato nel contesto d’esecuzione ci permette di scrivere script affidabili e sicuri!

Buono scripting a tutti!!! Sorriso

Annunci
  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: