Microsoft sta prendendo misure non solo per rendere Windows Server 2025 e Windows 11 24H2 (e Windows 12) più sicuri, ma anche più facili da amministrare, introducendo il comando sudo nei suoi sistemi operativi, comando che tutti sappiamo essere storicamente associato a Linux.
Cos’è il comando sudo?
Chiunque abbia mai utilizzato Linux conosce sudo. Per coloro che non lo conoscono, sudo sta per “superuser do” e consente agli utenti standard di eseguire comandi che altrimenti richiederebbero privilegi di amministratore.
Prima di sudo, per eseguire comandi o applicazioni che richiedono privilegi di amministratore, gli utenti dovevano o accedere come utente root o utilizzare il comando “su” per accedere all’account utente root
Superuser do, noto come sudo, è un programma della console Linux che permette agli utenti con bassi privilegi di eseguire comandi con privilegi elevati, tipicamente come root.
Il comando sudo rafforza la sicurezza in Linux permettendo ai server di operare normalmente con account a basso privilegio, mentre gli utenti mantengono la possibilità di accrescere i propri privilegi quando necessario per l’esecuzione di comandi specifici. Rimasto a lungo senza eguali rispetto a Windows, consente agli amministratori di determinare quali utenti possono accedere ai privilegi di amministratore e persino di controllare quali applicazioni sono soggette a tali privilegi.
Sudo in Windows Insider Build
Questa funzione è oggi disponibile all’interno delle versioni Insider, ovvero le preview disponibili a tutti coloro che si vogliono cimentare con le prossime novità di Windows e Windows Server. La prima operazione da fare per poter testare il comando sudo è abilitare Enable sudo da Settings / System / For Developer.
Una volta attivato tramite il selettore corrispondente, ci viene offerta la possibilità di scegliere il comportamento del comando sudo tramite tre opzioni: in una nuova finestra, con input disabilitato o inline.
L’opzione di configurazione forceNewWindow è quella predefinita di sudo per Windows, che consente di eseguire il comando in una nuova finestra. Questo è simile al comportamento del comando runas /user:admin.
Attraverso l’opzione di configurazione disableInput si eseguirà il processo elevato nella finestra corrente, ma con la gestione dell’input chiusa. Ciò significa che il processo elevato non sarà in grado di ricevere input dalla finestra della console corrente. Questo è utile per scenari in cui si desidera eseguire un comando come amministratore, ma non si desidera consentire al comando di ricevere input dalla finestra della console corrente. Questa opzione di configurazione fornisce parte della comodità dell’opzione di configurazione inline ma consente di mitigare alcuni dei rischi di sicurezza intrinseci.
L’opzione di configurazione normal è più simile a come sudo si comporta sui sistemi Unix-like. Questa configurazione eseguirà il processo elevato nella finestra corrente e il processo sarà in grado di ricevere input dalla sessione della console corrente. Questo è utile per scenari in cui si desidera eseguire un comando come amministratore e si desidera consentire al comando di ricevere input dalla finestra della console corrente. Questa opzione di configurazione fornisce la massima comodità, ma si dovrebbe scegliere solo se si è consapevoli dei rischi di sicurezza associati.
Nelle configurazioni di cui sopra, sudo.exe avvierà un nuovo processo con privilegi elevati, un processo sudo.exe elevato, e il sudo.exe originale non elevato stabilirà una connessione RPC con il nuovo processo elevato. In altre parole, le informazioni vengono trasmesse dall’istanza di sudo non elevata a quella elevata. In particolare, le gestioni della console dal processo non elevato vengono passate al processo elevato, il che consente al processo elevato di leggere l’input dal processo non elevato e scrivere l’output nel processo non elevato. Tuttavia, quando sudo è configurato nella configurazione “Input cloded”, il processo elevato sostanzialmente non riceverà la gestione dell’input della console, quindi non sarà in grado di leggere l’input dall’utente.
È importante essere consapevoli delle implicazioni sulla sicurezza quando si esegue sudo nelle configurazioni “Inline” o “Input closed” dato che esiste la possibilità che un processo con integrità media possa controllare il processo elevato. Questo rischio viene mitigato nella configurazione “Input closed” perché il processo elevato non sarà in grado di leggere l’input dall’utente
Essendo già confidente con il comando in ambiente Linux, attiverò per prima l’opzione Inline. Da ora in poi possiamo eseguire il comando in una sessione PowerShell, che al momento della scrittura viene rilasciato nella versione 0.1.5.
Come usare sudo in Windows
Per utilizzare Sudo per Windows, basta semplicemente anteporre sudo al comando che si desidera eseguire come amministratore. Ad esempio, per eseguire netstat -ab come amministratore, si eseguirebbe sudo netstat -ab nella finestra della console.
Poiché sudo eleva il processo target per eseguirlo con i permessi di amministratore, verrà aperto un prompt (UAC) che chiederà di verificare se si desidera continuare.
Da cosa si differenzia sudo da runas esistente?
Il comando sudo offre un modo per elevare rapidamente un comando come amministratore dall’attuale contesto della riga di comando (non elevata) ed è familiare per gli utenti provenienti dalla piattaforma Linux. Il comando runas offre un modo per eseguire programmi come qualsiasi utente, inclusi gli amministratori se lo desideri. Attualmente, il comando sudo su Windows non supporta l’esecuzione di programmi come altri utenti. Di seguito vengono evidenziate altre differenze chiave tra sudo e runas:
- runas consente di eseguire programmi come altri utenti, inclusi ma non limitati agli amministratori. Questa funzionalità è prevista per il comando sudo, ma non è ancora stata implementata
- sudo consente di elevare rapidamente un processo (come amministratore):
- E’ possibile scegliere di farlo in una nuova finestra, che assomiglia al flusso di amministratore di runas.
- E’ possibile scegliere di collegare il processo elevato alla finestra della console corrente con le opzioni di configurazione disableInput e normal. Questo non è supportato con runas,
- runas può richiedere agli utenti una password nella riga di comando
- sudo può essere elevato solo tramite la funzione di sicurezza User Account Control (UAC) progettata per proteggere il sistema operativo da modifiche non autorizzate, utilizzando una richiesta di verifica
Sudo for Windows Open Source Repository
Grazie all’apertura verso il mondo Linux introdotta da Satya Nadella, e poi consolidata nel corso degli anni, il progetto Sudo per Windows è open source, quindi aperto ad eventuali contributi e feedback. Si può trovare il codice sorgente di Sudo per Windows su GitHub.
Conclusioni
Sudo per Windows rappresenta un’innovazione nel mondo Windows, tuttavia non può essere ancora paragonato alla sua controparte Linux a causa di alcune limitazioni. Nonostante ciò, le prospettive per il futuro sono promettenti, specialmente considerando che si tratta di una versione non ancora pienamente sviluppata e che quindi offre ampio spazio per miglioramenti.