Klasický vývojářský problém - zneužívání jedné proměnné/konfigurace pro více významů. User má konfigurovat jen user name a UserID jen jeho ID. Každé automagické odhadování "co by to tak mohlo být" je cesta do pekel a hodí se tak někam do UI pro vyhledávání. Pro takto kritickou infrastrukturu je to překvapivé.
Ale vis jak, soudruh Poettering ti tu servisu proste spusti, at se deje co se deje, zejo ... takze bys mu za to mel vlastne dekovat no ne? Co natom ze misto pod pozadovanym userem ... trebas pod rootem. A kdyby nahodou neco kikslo cestou, tak ti to bude restartovat a restartovat a restartovat ... az ti to urestartuje k smrti.
BTW: Zrovna nedavno sem resil proc jedna appka padala a padala ... mno on soudruh tvurce byl asi ze stejny partaje, protoze na varchar poslal where x = 5 ... a ono tam bylo taky A, N, B ... a jaksi to padalo na tom, ze 5 != '5'.
S tímhle přístupem ("pokud to správně nefunguje, spustíme to jako root") si trošku zmýlil platformu; měl systemd vydat pro Windows ME, a ne pro linucha (a to proti woknům v podstatě nic nemám, je to nástroj stejně jako třeba krumpáč, a má svoje vlastnosti, silný i slabý stránky, na něco se hodí a na něco ne).
=====
1. neexistence předpisu pro rozlišení významů
=====
Nejlepší je významy nemuset rozlišovat vůbec, tj. z principu je nemíchat.
======
2. spouštění pod rootem v případě chyby
======
Argumentuje rádoby přísně logicky - pokud je hodnota jakéhokoliv nastavení validní, použije se, a když se ukáže jako nesprávná, hodí chybu (např. neexistující uživatel). Pokud je hodnota od začátku nevalidní (např. v jejich validátoru číslo na začátku uživatelského jména), jen to zaloguje warningem a nastavení ignoruje. Proto to ignoruje a spustí pod defaultní hodnotou = root.
Celý tenhle princip je IMO blbě. U tak kritických věcí by neměli nevalidní konfiguraci vůbec dovolit, akorát to vede na akceptování bordelu v konfigurácích.
Sloučení významů je špatně. Už tak jde o záznam převedený na string, kde není zaručeno nic. Rozsah proměnné, číselná soustava, int/floatt,... Jenom debil si to komplikuje tím, že jeden klíč může mít dva významy. Buďto chci UserName, nebo UserId a na 100% to ví jenom ten, kdo skript píše.
Neexistence předpisu na tom nic nezmění. Jenom by upozornila na další způsob eskalace privilegií, prostě přidání znaku do konfiguračního souboru. Což může udělat kdokoliv, kdo třeba spravuje balíček.
S tím, že něco by default spustí pod rootem, pokud neidentifikuje uživatele, to není chyba. To je diagnóza.
A to, že se "musí držet systémů se striktnějším zabezpečením" je přece další blbost. Přece pokud mám striktní pravidla jako podmnožinu benevolentních, musím vstup ošetřit tak, aby se korektně choval na benevolentních pravidlech. Že selže i něco jinýho je irelevantní, zvlášť v případě systémové komponenty. A tohle je ten případ - benevolentní systém podporuje něco navíc (číslo jako prví znak ve jméně) proti striktním.
To slučování bych neviděl tak jednoznačně, je to otázka pohledu. Zde se jedná o uvedení uživatele jakýmkoliv způsobem, v budoucnu to může být třeba jednodušeji rozšiřitelné. Když budete naopak používat userid i username, musíte zase řešit, zda nejsou údaje uvedeny zaráz.
Mimoto uvedená chyba dokonce ani nebyla způsobena sloučením významů, ale chybným zpracováním údaje, takže to tu protřepáváme zbytečně.