Lennart Poettering, hlavní vývojář systemd, představil utilitu run0
, což je náhrada známého příkazu sudo
. Opravuje mnoho problémů spojených s tímto široce používaným nástrojem pro získání dočasných zvýšených oprávnění. S příkazem sudo
jsou různé problémy, které v podstatě spočívají v tom, že se jedná o rozsáhlou binárku s příznakem SUID. Skládá se z privilegovaného kódu, který mohou neprivilegovaní uživatelé spouštět ze svého vlastního kontextu.
Proto je sudo
vytváří poměrně velký prostor pro nejrůznější útoky a OpenBSD místo něj raději používá doas
. Tato utilita sice v principu trpí stejným problémem, ale má mnohem méně kódu a tedy výrazně zužuje prostor pro útoky.
Lennart Poettering chce tento problém řešit a přišel s run0
, který se z uživatelského hlediska chová jako sudo
, ale funguje úplně jinak a nevyžaduje SUID. Požádá správce služeb o vytvoření shellu nebo příkazu pod ID cílového uživatele, čímž vytvoří nový PTY a posílá data tam a zpět z původního TTY a nového PTY. Jinými slovy: cílový příkaz je vyvolán v izolovaném kontextu exec, čerstvě forknutém z PID 1, aniž by zdědil jakýkoli kontext od klienta,
píše Lennart. Jedinou explicitní výjimkou je proměnná $TERM
.
Dalo by se tedy říci, že run0
má v mnoha ohledech blíže k chování ssh
než k původnímu sudo
. Až na to, že se neobtěžuje s šifrováním nebo kryptografickou autentizací, správou klíčů a podobně, ale spoléhá se na místní identifikační mechanismy jádra. Nová utilita také neimplementuje vlastní konfigurační jazyk ani ekvivalent /etc/sudoers
. Místo toho využívá pouze polkit, tedy běžný způsob ověřování lokálních uživatelů.