Utilita run0 je bezpečnější náhradou za sudo založenou na systemd

30. 4. 2024

Sdílet

Terminál Linux příkazová řádka Autor: Depositphotos

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ů.

Našli jste v článku chybu?

Autor zprávičky

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.