Samozřejmě je špatně, že se direktiva "User=" parsuje jako UID i username.
Ale další problém vidím v tom, že není jasně daný formát username. Existuje ve světě Linuxu nějaká dokumentace, která by to popisovala? Asi ne, a závisí to tom, jak se vyspali autoři konkrétního distra.
Pro srovnání z MSDN: User account names are limited to 20 characters and group names are limited to 256 characters. In addition, account names cannot be terminated by a period and they cannot include commas or any of the following printable characters: ", /, \, [, ], :, |, <, >, +, =, ;, ?, *. Names also cannot include characters in the range 1-31, which are nonprintable.
No, on bude IMO vtip v tom, že jakmile zjistí že první znak je číslo, tak "zahodí" všechno co jsou písmena, bych si tipl a proto zbude 0, což je [virgl] root. Takže je možné že na "0yuppie1" by hledal uživatele 01 nebo 1. Nezkoušel jsem -nemá cenu, ať tak nebo tak je to špatně, protože nehledá "0yuppie1" ať už je to syntax. správně nebo ne.
https://www.root.cz/zpravicky/bizarni-chyba-v-systemd/#o928358
Já se na ten linkovaný "zdroj" na githubu díval už před několika dny a jediné co se tam řešilo je filozofiký přístup LP k tomu, že je to správně a není to bug, Tak nelži.
A ty ses do toho kódu díval? Dneska se k tomu asi nedostanu, ale garantuju ti že se podívám už jenom co že se tam s tím přesně děje, že se z "0day" stane "root" nebo 0.
Já nelžu. V těch komentářích je mimo jiné výslovně vyvrácena vaše domněnka, že když hodnota začíná číslem, zbytek se ignoruje. Stejně tak je tam vysvětleno, jak se systemd chová.
A ty ses do toho kódu díval?
Samozřejmě. Já nemám ve zvyku plácat v diskusích nesmysly o něčem, o čem nic nevím.
garantuju ti že se podívám už jenom co že se tam s tím přesně děje, že se z "0day" stane "root" nebo 0.
Opět, v těch komentářích na GitHubu to máte vysvětleno a je tam i komentář s odkazem na konkrétní kód. Z "0day" se nestane "root" ani "0". Prostě když má nějaká volba hodnotu, která neodpovídá syntaxi, ta volba se ignoruje, jako by tam nebyla. Systémové jednotky se spouštějí pod rootem, výjimkou je jedině případ, kdy je explicitně uvedena volba User. Takže když jí systemd ignoruje, spustí se to normálně pod rootem.
"Samozřejmě. Já nemám ve zvyku plácat v diskusích nesmysly o něčem, o čem nic nevím."
To asi ano, ale plácat nesmysly o věcech o kterých i něco víš ti většinou žádný problém nedělá.
Jinak nejsem si úplně jistý tím co se tam píše, přece kekdo kromě tebe v diskuzi plácá, takže si to pokud budu mít chuť, ověřím, ale i ten můj předpoklad klidně může být mylný. To se u předpokladů stává.
"Z "0day" se nestane "root" ani "0". Prostě když má nějaká volba hodnotu, která neodpovídá syntaxi, ta volba se ignoruje, jako by tam nebyla. "
Což je zajímavé, protože jako první je tam (podle těch tvých linků)
parse_uid(c->parameter, &id);
což moc jako kontrola syntaxe nevypadá - doměnka - nemám na to dnes čas, ale začíná mě to zajímat čím dál tím víc . . .
Ne, u čísel se to nevyhodnocuje jinak. Je to tak, jak jsem to napsal výše. systemd prostě u každé volby nejprve vyhodnotí, zda hodnota odpovídá syntaxi povolené pro danou volbu. Když hodnota té syntaxi neodpovídá, vypíše varování do logu a tu volbu kompletně ignoruje, jako kdyby v jednotkovém souboru vůbec nebyla.
Klasický Jirsákův problém s pochopením psaného textu? IMO se čísla v proměnné User chápou jako UID nikoli jako username = k číslům se systemd chová jinak, než k alfanumerickému řetězci, ke kterému se chová jako k username. To že je před tím ještě dementní Poeteringův syntakční filtr, který se primárně snaží podle <sakrasmus>fáze měsíce a pohlaví uživatele</sarkasmus> rozhodnout, jestli vůbec bude se ZADANOU konfigurační hodnotou pracovat nebo ne, na tom co jsem napsal v předchozím příspěvku nic nemění! Akorát to ukazuje na další nedostatky v návrhu. Já jen jasně napsal, že k číslu se systemd chová jinak než k NEPLATNÉ položce. Pokud vím, číslo je platná položka = zachází se s ní jinak než s neplatnou položkou, nebo ne?
Původně jste psal o čísle na začátku hodnoty, myslel jsem, že v tom pokračujete – jinak totiž váš komentář nedává smysl. K platným položkám se systemd vskutku chová jinak, než neplatným – neplatné ignoruje, platnými se řídí. Pokud je hodnotou User jen číslo, je to platná položka. Neplatná položka User je to např tehdy, když obsahuje symboly, mezery, znaky s diakritikou, nebo když začíná číslicí a není to číslo.
No vida, Jirsák umí uznat chybu? Klobouk dolů. Každopádně nechápu, jak si můžete myslet, že v tom pokračuju, když hned na začátku příspěvku píšu "to je pravda". To že vám něco nedává smysl, neznamená, že tam smysl není. Každý uvažuje jinak, ale najdou se ješitové, co to nechápou a svůj způsob cpou ostatním vrchem spodem jako jediný správný, pak je diskuze o ničem. Systemd vykazuje v daném tématu více - řekněme "zvláštností", takže se není co divit, že se o tom dá přemýšlet více "do šířky".