Come usare Run0 in Linux
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.
Simile a sudo e doas, Run0 può anche passare a un utente non root quando esegue comandi. Per farlo, aggiungi il --user
flag 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.
Proprio come quando si eseguono programmi come root, è anche possibile utilizzare Run0 con il --user
flag per avviare una sessione shell come utente specifico:
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 --chdir
flag per forzare un cambio di directory quando si passa a una nuova sessione shell:
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 --unit
flag seguito dal nome che vuoi usare:
Puoi anche aggiungere una descrizione personalizzata alla tua shell root aggiungendo il --description
flag:
Verifica di aver applicato correttamente i tuoi dettagli elencando il nome personalizzato della tua shell root utilizzando systemctl
:
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 --background
flag seguito da un valore compreso tra 40 e 49:
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 --nice
flag con il valore “-20”:
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 --slice
flag 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:
Puoi anche usare il --slice-inherit
flag 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:
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:
Conferma che ora stai eseguendo all’interno del tuo contenitore stampando il nome host della sessione del tuo terminale:
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