0day: systemd e gli utenti “particolari”

by Matteo Cappadonna on

Systemd, oramai adottato dalle maggiori distribuzioni Linux, non è nuovo a bug esotici. Siano essi dati dal fatto che il progetto è relativamente nuovo o dal fatto che systemd tende a fare qualcosina in più di quello che dovrebbe, la -quasi- continua scoperta di bug continua a gettare legna sul fuoco, rafforzando i punti di vista dei detrattori.

Non aiuta di certo l'atteggiamento del principale sviluppatore del progetto, Poettering, che spesso sembra cercare scuse per puntare il dito altrove e non dover affrontare i problemi.

Il problema in questione è causato da nomi utenti "particolari": pare che, se un nome utente inizia con una cifra (come 0day, ad esempio) systemd interpreti male la cosa e, se viene richiesto a systemd di lanciare un processo con quell'utente, questo decida di lanciarlo invece come root.

Il bug è stato rilevato nella versione 232 di systemd e questo uno stralcio di descrizione che si può trovare su bug aperto sul repository GitHub del progetto:

Expected behaviour you didn't see
The process started by systemd should be user previlege

Unexpected behaviour you saw
The process started by systemd was root previlege

Comportamento aspettato non rilevato
Il processo avviato da systemd dovrebbe avere i privilegi dell'utente

Comportamento inaspettato rilevato
Il processo avviato da systemd ha i privilegi di root

Insomma, decisamente preoccupante come comportamento.

Una delle cose che, personalmente, mi fa sorridere (per non piangere, si intende) è come al solito l'atteggiamento di Poettering riguardo la faccenda:

systemd will validate all configuration data you drop at it, making it hard to generate invalid configuration. Hence, yes, it's a feature that we don't permit invalid user names, and I'd consider it a limitation of xinetd that it doesn't refuse an invalid username.

So, yeah, I don't think there's anything to fix in systemd here. I understand this is annoying, but still: the username is clearly not valid.

systemd valida tutti i dati di configurazione che gli mandi, rendendo difficile generare configurazioni non valide. Quindi, si, è una funzionalità il fatto che non permettiamo nomi non validi, e considero una limitazione di xinetd il fatto di non rifiutare nomi utenti non validi.

Quindi, non credo ci sia nulla da sistemare in systemd. Capisco sia noioso ma comunque: il nome utente è chiaramente non valido

In soldoni, dunque: systemd controlla le configurazioni fatte tramite esso, se fai la configurazione con un altro tool che non esegue gli stessi controlli, peggio per te, non dobbiamo garantire che systemd funzioni correttamente in tal caso.

Insomma, seppur i punti possano sembrare validi da entrambe le parti (effettivamente, a fronte di questo bug dovrebbe esserne aperto uno parallelo per il tool che ha permesso la creazione di quell'utente), il comportamento è a dir poco pericoloso e non è possibile ignorare semplicemente la cosa.

La discussion va avanti, e sembra che si stia ragionando su come debba comportarsi systemd nel momento in cui trova parametri non validi nelle sue Unit, nel frattempo il bug è stato marcato come "not-a-bug" dallo sviluppatore ideatore del progetto.

Leggi il contenuto originale su Mia mamma usa Linux!

Written by: Matteo Cappadonna