Come usare Run0 in Linux

Come usare Run0 in Linux
Una fotografia che mostra un primo piano dello schermo di un computer portatile.

Run0 è un nuovo e innovativo programma di escalation dei privilegi per le distribuzioni Linux basate su Systemd. Fornisce un’alternativa leggera e “senza configurazione” alle tradizionali app di escalation come sudo e doas. Qui, ti mostriamo le basi dell’utilizzo di Run0 per escalare i comandi per il tuo sistema Linux.

Prima di procedere, potresti voler scoprire cos’è Run0 e in che cosa differisce da sudo.

Come eseguire programmi come un utente diverso

Uno degli utilizzi più comuni per le app di escalation dei privilegi è l’esecuzione di comandi come utente root. A questo proposito, toccare l’utente root in Run0 richiede di aggiungere run0 davanti al comando che si desidera eseguire. Ad esempio, quanto segue crea una nuova cartella in una directory accessibile solo da root:

Verrà visualizzata una richiesta di password CLI o una piccola finestra GUI che richiederà l’immissione della password dell’utente corrente.

Uno screenshot che mostra la richiesta di password per Run0.

Simile a sudo e doas, Run0 può anche passare a un utente non root quando esegue comandi. Per farlo, aggiungi il --userflag seguito dal nome dell’utente con cui vuoi eseguire il comando:

Inserisci la password dell’utente a cui vuoi passare, quindi premi Enter.

Come passare alla shell di un altro utente

Un’altra parte fondamentale di un’app di escalation dei privilegi è la sua capacità di far scendere l’utente a una shell root. Questo ti dà la possibilità di interagire con il tuo sistema come utente root ed eseguire comandi più complessi dalla CLI.

In Run0 è possibile farlo eseguendo il programma senza argomenti aggiuntivi.

Un terminale che mostra la shell root da un prompt Run0.

Proprio come quando si eseguono programmi come root, è anche possibile utilizzare Run0 con il --userflag per avviare una sessione shell come utente specifico:

Un terminale che mostra il prompt Run0 per un utente non root.

Oltre a ciò, run0 consente di creare sessioni shell con permessi di gruppo temporanei per utenti non root. Ciò è utile se si desidera accedere a cartelle bloccate dietro un certo utente e gruppo senza passare a root.

Ad esempio, il seguente comando concede all’utente “alice” l’accesso temporaneo al gruppo “www-data”:

È anche possibile utilizzare il --chdirflag per forzare un cambio di directory quando si passa a una nuova sessione shell:

Un terminale che mostra il cambio automatico di directory quando si passa alla shell di un altro utente.

Come personalizzare la sessione corrente di Run0

Il punto di forza di Run0 è che non usa setuid (SUID) per gestire le azioni del superutente. Invece, si affida a systemd-run che crea pseudo-TTY isolati per eseguire comandi come root.

Una conseguenza di questo approccio è che Systemd tratta ogni shell Run0 come un’unità discreta in esecuzione sotto il service manager. Ciò consente di personalizzare il processo della shell root, a differenza delle tradizionali app di escalation dei privilegi.

Per aggiungere un’etichetta per la shell root, usa il --unitflag seguito dal nome che vuoi usare:

Puoi anche aggiungere una descrizione personalizzata alla tua shell root aggiungendo il --descriptionflag:

Verifica di aver applicato correttamente i tuoi dettagli elencando il nome personalizzato della tua shell root utilizzando systemctl:

Un terminale che mostra i dettagli dell'unità Systemd personalizzata.

Di default, Run0 cambia il colore dello sfondo della shell di root in rosso. Sebbene questo sia un utile indicatore visivo, può distrarre se si utilizza un tema chiaro sul sistema.

Per modificare questa impostazione, utilizzare il --backgroundflag seguito da un valore compreso tra 40 e 49:

Un terminale che mostra il diverso colore di sfondo in Run0.

Infine, puoi anche regolare il “livello di gentilezza” della tua shell di root. Questo è un valore tra -20 e 19 che determina se il tuo kernel darà priorità al tuo processo rispetto ad altri.

Per dare alla shell root la massima priorità, usa il --niceflag con il valore “-20”:

Un terminale che evidenzia la shell root con un livello nice modificato.

Come raggruppare le sessioni Run0 insieme

Oltre a poter personalizzare ogni shell root di Linux, puoi anche usare Run0 per raggrupparle insieme in una slice di Systemd. Questa è una struttura speciale che consente alla tua macchina di adattare la richiesta di risorse per i processi senza influenzare il resto del sistema.

Per creare una shell root su una slice diversa, esegui il --sliceflag seguito dal nome della slice su cui vuoi spostarti:

Conferma che la nuova sessione è in esecuzione nella nuova slice elencando i processi al suo interno:

Un terminale che mostra i dettagli della porzione Systemd personalizzata.

Puoi anche usare il --slice-inheritflag per raggruppare la tua nuova slice insieme alla slice da cui è derivato Run0. Questo è utile se hai già raggruppato le tue shell nelle rispettive slice e vuoi solo aggiungere una nuova shell:

Come eseguire comandi sui contenitori Systemd utilizzando Run0

Systemd-nspawn è un programma speciale che può creare e gestire contenitori Linux leggeri simili a Docker. Essendo parte della suite Systemd, puoi anche usare Run0 per eseguire comandi nei tuoi contenitori nspawn dalla tua macchina host.

Inizia elencando i contenitori Systemd-nspawn disponibili nel tuo sistema:

Un terminale che mostra un elenco dei contenitori Systemd-nspawn disponibili.

Esegui il seguente comando per creare una cartella all’interno della directory principale del tuo contenitore:

È anche possibile passare alla shell root del contenitore utilizzando Run0:

Un terminale che mostra il comando per cambiare il prompt della shell del contenitore.

Conferma che ora stai eseguendo all’interno del tuo contenitore stampando il nome host della sessione del tuo terminale:

Un terminale che mostra il processo di passaggio dal sistema locale al contenitore Systemd-nspawn.

Imparare a usare Run0 per eseguire e gestire i comandi root in Linux è solo la punta dell’iceberg quando si tratta di app di escalation dei privilegi. Immergiti nel mondo complesso esaminando le differenze tra su, sudo e sudo -s.

Credito immagine: Xavier Cee tramite Unsplash . Tutte le modifiche e gli screenshot sono di Ramces Red.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *