V Linuxu se taky dá použít machinectl:
machinectl shell --uid=root
Není to přímý ekvivalent sudo, protože se tím vytvoří celé nové sezení jako kdyby se root přihlásil přímo. Záleží na případech použití, v některých se to výborně hodí. Nevýhoda je, že to předpokládá funkční polkit. Výhoda je, že místo sudoers se to dá nastavit přes polkit.
No ja neviem ... V článku je jasne napísané "Proti sudo má ale doas dvě výhody: je menší a má jednodušší konfigurační soubor. Obojí dohromady znamená menší složitost a méně bezpečnostních problémů." Platí to aj pre machinectl? Neštudoval som zdrojáky, ale mám pocit, že machinectl + polkit bude zložitosťou minimálne na úrovni sudo, možno aj o rád horšie.
Koncepčně je machinectl řádově složitější, než sudo. Jenže jak právě i tento příklad dokazuje, představa "jednodušší kód = méně bezpečnostních problémů" není automaticky pravda. Konkrétně tady byl problém v tom, že sudo implementuje parser (z podstaty věci zpracovává potenciálně nebezpečná vstupní data), v C (z podstaty věci snadno zranitelný), v rámci privilegovaného procesu - setuid root (což je konceptuálně špatně). Je to sice jednoduché, ale zároveň už z principu jasně nebezpečné.
machinectl je neprivilegovaná utilita, ověřování práv provádí nezávislý proces (polkit) a případný start sezení pod root další nezávislý proces (systemd). Je to složité, ale pokud se důvěřuje dbusovým rozhraním mezi nimi, pak zpracování nebezpečných dat a bezpečnostně kritické operace jsou vzájemně striktně oddělené, takže i kdyby dejme tomu v programu machinectl byla tatáž chyba, jako v sudo, takto zneužít by ji nešlo.
To samozřejmě neznamená, že machinectl a celé prostředí dbus/polkit/systemd nemůže mít zase jiné problémy. Jenže ve skutečnosti bezpečnost nakonec vždycky záleží na jádru a LSM, což je ještě mnohem komplexnější, než tohle všechno dohromady. Takže argument o jednoduchosti je z velké části lichý.