Lennart Poettering esitteli run0-apuohjelman, jonka avulla prosessit voivat suorittaa toimintoja muiden käyttäjien tunnistetiedoilla. Uusi apuohjelma on suunniteltu turvallisemmaksi korvaajaksi sudo-komennolle, ja se on toteutettu systemd-run-komennon ympärille, eikä SUID-lipulla varustettua suoritettavaa tiedostoa tarvita. Run0-apuohjelma sisältyy systemd 256:een, joka on tällä hetkellä julkaisukandidaattivaiheessa.
On huomattava, että prosessitunnisteen muuttaminen SUID-lipun avulla sudo-komennossa liittyy lisäriskeihin, koska SUID-prosessi perii suorituskontekstin, joka sisältää monia etuoikeuttamattoman käyttäjän hallitsemia ominaisuuksia, kuten ympäristömuuttujia, tiedostokuvauksia, ajoitusparametreja ja cgroup-sidoksia. Ydin tyhjentää osan näistä ominaisuuksista automaattisesti SUID-prosesseilta, kun taas toiset tyhjentää itse sovellus. Monimutkaisissa SUID-ohjelmissa, kuten sudo-komennossa, havaitaan kuitenkin edelleen säännöllisesti haavoittuvuuksia, jotka johtuvat ulkoisten tietojen huolimattomasta käsittelystä, johon etuoikeuttamaton käyttäjä voi vaikuttaa.
run0-komennossa SUID:n käyttämisen sijaan järjestelmänvalvojalle tehdään pyyntö käynnistää komentotulkki tai prosessi määritetyllä käyttäjätunnuksella, luoda uusi pseudopääte (PTY) ja siirtää tietoja sen ja nykyisen päätteen (TTY) välillä. Tämä toiminta muistuttaa enemmän ssh:n kuin klassisen sudon käyttöä. Etuoikeutettu prosessi toimii eristetyssä kontekstissa, jonka luo PID 1 käyttäjäprosessin sijaan, mikä tarkoittaa, että se ei peri käyttäjän ympäristöominaisuuksia, lukuun ottamatta $TERM-ympäristömuuttujan edelleenlähettämistä. Välittämistä ohjataan nimenomaisesti sallittujen ominaisuuksien luettelon avulla sen sijaan, että yritettäisiin kieltää vaarallisia ominaisuuksia (valkoisen listan käsite pikemminkin kuin mustan listan käsite).
Polkitiä käytetään valtuutukseen ja käyttäjäoikeuksien määrittämiseen run0-komennossa. Sudon käyttämää klassista sääntöjen määrityskieltä (/etc/sudoers) ei tueta. Toiminnot ohjelmien suorittamiseen eri oikeuksilla on sisäänrakennettu systemd-run-komentoon, ja run0-komento luodaan symbolisena linkkinä systemd-run-komentoon, joka tarjoaa sudon kaltaisen komentorivikäyttöliittymän.
run0:n lisäominaisuuksiin kuuluu korotettujen oikeuksien ilmaiseminen asettamalla pääteikkunassa punaisen taustan ja lisäämällä punaisen pisteen ikkunan otsikkoon. Kun suoritus on lopetettu muilla oikeuksilla, piste katoaa ja tausta palautuu normaaliksi. Lisäksi run0 tukee kaikkia "systemd-run"-asetuksia, kuten "--property"-parametria, jonka avulla voit määrittää mukautettuja systemd-palveluasetuksia (esim. "CPUWeight=200 MemoryMax=2G IPAccounting=yes").
Lähde: opennet.ru
