Setuid

Linux.fista
Versio hetkellä 16. maaliskuuta 2009 kello 16.49 – tehnyt LP (keskustelu | muokkaukset) (järjestelmäkutsut)
Siirry navigaatioon Siirry hakuun

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

Linux käyttää kolmea uid-arvoa: "real uid", joka alkujaan on kutsuvan ohjelman (käyttäjän) uid, "effective uid", joka suid-ohjelman tapauksessa on tiedoston omistajan uid, sekä "saved uid", joka asetetaan uid-arvoa vaihdettaessa. suid-ohjelma voi näin vaihtaa oikeuksia kutsuvan prosessin (käyttäjän) oikeuksien ja ohjelmatiedoston omistajan oikeuksien välillä.

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.