Pokud je tam validní jméno, ale neexistujícího uživatele, tak se unita vůbec nespustí a přímo to vyplivne chybu na řádek (a unita je prostě failed):
# systemctl start t
Job for t.service failed because the control process exited with error code.
See "systemctl status t.service" and "journalctl -xe" for details.
# systemctl status t
t.service
Loaded: loaded (/etc/systemd/system/t.service; static; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2017-07-03 10:02:47 CEST; 4s ago
Process: 19175 ExecStart=/usr/bin/id (code=exited, status=217/USER)
Main PID: 19175 (code=exited, status=217/USER)
Kdežto s nulou na počátku prostě proběhne:
# systemctl status t
t.service
Loaded: loaded (/etc/systemd/system/t.service; static; vendor preset: enabled)
Active: inactive (dead)
A spustí se (ExecStart) to jako root:
Jul 03 10:03:43 raid systemd[1]: /etc/systemd/system/t.service:3: Invalid user/group name or numeric ID, ignoring: 0tomasxxx
Jul 03 10:03:43 raid systemd[1]: Starting t.service...
Jul 03 10:03:43 raid id[19569]: uid=0(root) gid=0(root) groups=0(root)
Jul 03 10:03:43 raid systemd[1]: Started t.service.
Když je v unit souboru neexistující uživatelské jméno (ale syntakticky správné), systemd to vyhodnotí jako chybu. Ale jedním znakem eskalovat privilegia v unit souboru je snadné – stačí před User= přidat # jako komentář, nebo místo User= napsat Usr= a vyrobit tak dnes neexistující volbu. V prvním případě (s komentářem) to ani nic nevypíše, v druhém případě systemd vypíše varování před neznámou volbou.
Doprkynka, ale tady se celou dobu resi to, ze systemd _nespusti_ sluzbu pod zadanym existujicim, a validnim, uzivatelem, misto toho ji spusti pod rootem.
Jsou dana pravidla na validni username + jsou nejaka doporuceni (napr. nezacinat pomlckou, povoleni znaku '$' na konci username). Ale systemd nema co brat nejake striktni doporuceni a udelat z nej tvrde pravidlo. To je bod jedna.
Bod dva je ta jeste sveraznejsi intepretace one sverazne striktni definice.
Jedno lepsi jak druhe.
To je ovšem něco úplně jiného, než tu řeší všichni ostatní – ale je to jediná skutečná chyba. Ano, může být problém to, že systemd neakceptuje uživatelské jméno, které na daném systému může reprezentovat skutečného uživatele. To bych systemd ještě odpustil, když někdo takového uživatele má, může použít jeho uid. Ale mělo by to být napsané v dokumentaci.