Setuid

Linux.fista
Siirry navigaatioon Siirry hakuun

setuid tarkoittaa ohjelman (prosessin) uid-arvon muuttamista toiseksi, joko järjestelmäkutsulla setuid, seteuid tai setreuid tai tiedoston suid-bitillä. Ohjelma siis ajetaan osittain tai kokonaan eri tunnuksen oikeuksin. Kutsut edellyttävät yleensä pääkäyttäjän oikeuksia (tarkemmin CAP_SETUID-lippua) tai että prosessi on käynnistetty suid-ohjelmana. setuid vaihtaa pääkäyttäjän kutsumana uid-arvon pysyvästi, toinen järjestemäkutsu seteuid mahdollistaa pääkäyttäjäoikeuksien palauttamisen. setreuid asettaa sekä käytettävän että "oikean" uid:n. Ryhmien hallintaan on vastaavat järjestelmäkutsut (setgid & kumpp.) ja tiedoston sgid-bitti.

Linux käyttää neljä uid-arvoa, joista perinteiset ovat "real uid", joka alkujaan on kutsuvan ohjelman (käyttäjän) uid, "effective uid", joka suid-ohjelman tapauksessa alkujaan on tiedoston omistajan uid, ja "saved uid", joka asetetaan uid-arvoa vaihdettaessa. euid määrää prosessin oikeudet ja sen voi muuttaa ruid:ksi tai suid:ksi. suid-ohjelma voi näin vaihtaa oikeuksia kutsuvan prosessin (käyttäjän) oikeuksien ja ohjelmatiedoston omistajan oikeuksien välillä. Pääkäyttäjän oikeuksin uid:t voi vaihtaa muiksikin.

Linuxissa on oma neljäs uid:nsä, joka yleensä on sama kuin euid, mutta voidaan muuttaa tästä erillään kutsulla setfsuid, jolloin tiedosto-oikeudet tulkitaan tämän neljännen uid:n mukaan. Tarkoitus on vähentää ennen kaikkea NFS-palvelimen haavoittuvuutta, koska tavallisen käyttäjän uid euid:na saattaa mahdollistaa signaalien lähettämisen palvelimelle ja siten toiminnan häiritsemistä.

setuid-kutsun ja siihen liittyvien muiden kutsujen käytös vaihtelee jonkin verran ytimen version yms. mukaan. Näitä kutsuja käyttävän on syytä varmistaa, että ohjelma toimii toivotulla tavalla kaikissa ympäristöissä tai että ohjelma varoittaa yritettäessä asentaa sitä järjestelmään, jonka toiminnasta ei ole tietoa. Lisätietoa manuaalisivuilla.