Monissa järjestelmissä root-käyttäjä tai pääkäyttäjä hallitsee järjestelmää täysin. UNIX-pohjaisten sovellusten alijärjestelmässä (SUA) ei ole root-käyttäjää. Kun POSIX (Portable Operating System Interface) -standardi kehitettiin, root-käyttäjän käsitettä pidettiin hallinnollisena kysymyksenä. Root-käyttäjän asemesta POSIX-standardi määrittää asianmukaiset valtuudet tiettyihin toimintoihin.

Tässä ohjeaiheessa

setuid ja setgid

setuid- ja setgid-toimintojen avulla ohjelma voi suoritettaessa omaksua tiettyjä sellaisen suojauspääobjektin piirteitä, jotka poikkeavat ohjelman suorittavan käyttäjän suojauspääobjektista. Näiden toimintojen avulla ohjelma voi vaihtaa kyseisiä piirteitä suorittavan käyttäjän piirteiden ja toisen suojausobjektin piirteiden välillä.

Asianmukaiset valtuudet ovat eri asia. setuid- ja setgid-toimintojen avulla sovellus voi hallita vastausta kysymykseen "kuka olet?", mutta asianmukaiset valtuudet vastaavat kysymykseen "mitä pystyt tekemään?".

UNIX-pohjaisten sovellusten alijärjestelmä ja identiteetit

Tyypillisissä UNIX-ympäristöissä on yksi ja vain yksi käyttäjä, jolle myönnetään kaikki oikeudet. Käyttäjällä, jonka nimi on yleensä root, on tunnus uid == 0. UNIX-pohjaisten sovellusten alijärjestelmässä kaikki tietyn järjestelmän tuetut valtuudet myönnetään käyttäjille, jotka kuuluvat kyseisessä järjestelmässä joko Järjestelmänvalvojat- tai Toimialueen järjestelmänvalvojat -ryhmään. Sisäänkirjautumista järjestelmänvalvojana ei tarvita. Jokaisella käyttäjällä, joka kuuluu joko Järjestelmänvalvojat- tai Toimialueen järjestelmänvalvojat -ryhmään, on root-valtuudet. Kaikki POSIX:ssa tai UNIXissa määritellyt valtuudet eivät ole käytettävissä SUA:ssa eli joitakin valtuuksia ei myönnetä kenellekään käyttäjälle.

Asianmukaisia valtuuksia tarvitaan yleensä moniin erilaisiin toimiin. Näitä ovat tiedostojärjestelmän käyttäminen, signaalien lähettäminen muille prosesseille (prosessinohjaus) sekä prosessin voimassa olevan käyttäjätunnuksen (UID) tai ryhmätunnuksen (GID) muuttaminen siten, että kyseisen prosessin mahdollisuus suorittaa tiettyjä toimia muuttuu.

POSIX-standardin mukaisesti tiedostolla on käyttöoikeudet, joihin sisältyvät UID:n (setuid) ja GID:n setgid) asettamisen bitit. Jos jompikumpi tai molemmat bitit ovat aktiivisia ja prosessi suorittaa kyseisen tiedoston, prosessi saa tiedoston UID:n tai GID:n. Kun toimintoa käytetään harkiten, se antaa tavalliselle käyttäjälle mahdollisuuden suorittaa ohjelmia tiedoston omistajan tai ryhmän valtuuksin, jotka ovat korkeammat kuin käyttäjän omat. Väärin käytettynä toiminto voi kuitenkin aiheuttaa tietoturvariskin, jos tavalliset käyttäjät voivat suorittaa toimia, joiden tulisi kuulua vain järjestelmänvalvojalle. Tästä syystä SUA ei oletusarvoisesti tue tätä toimintoa. Jos yrität suorittaa tiedoston, jossa joko setuid- tai setgid-bitti on aktiivinen, SUA ei suorita tiedostoa ja palauttaa virhekoodin ENOSETUID.

Setuid-toimintoon liittyviä asennustietoja UNIX-pohjaisten sovellusten alijärjestelmässä

Jos sinun on käytettävä sovellusta, joka vaatii POSIX-vakiotoimintaa, voit määrittää SUA:n asetukset niin, että se voi suorittaa tiedostoja, joiden setuid- tai setgid-bitti on aktiivinen. Jos SUA:n asetukset on määritetty tällä tavalla ja prosessi suorittaa tiedoston, jonka setuid- tai setgid-bitti on aktiivinen, SUA muodostaa prosessille paikalliset suojaustunnukset tiedoston omistajalle tai ryhmälle määritetyillä valtuuksilla. Koska tunnukset ovat paikallisia, muut verkon tietokoneet eivät tunnista niitä. Tämä tarkoittaa sitä, että vaikka tiedoston omistaja kuuluisi esimerkiksi Toimialueen järjestelmänvalvojat -ryhmään, prosessilla ei ole Microsoft® Windows® -verkon kautta luotettua pääsyä toimialueen muihin tietokoneisiin. Valtuudet ovat voimassa vain siinä tietokoneessa, jossa prosessia suoritetaan.

Prosessi voi esimerkiksi suorittaa ohjelmatiedoston, jonka setuid-bitti on aktiivinen ja jonka omistaja kuuluu Toimialueen järjestelmänvalvojat -ryhmään. Jos kyseinen ohjelma yrittää vaihtaa toimialueen käyttäjän salasanan, yritys epäonnistuu, koska prosessin suojaustunnussanomat ovat paikallisia, eivätkä muut toimialueen järjestelmät tunnista niitä. Toisaalta jos ohjelma yrittää muuttaa paikallisen käyttäjän salasanan, yritys onnistuu, koska tiedoston omistaja kuuluu Toimialueen järjestelmänvalvojat -ryhmään, joka yleensä kuuluu paikallisen tietokoneen Järjestelmänvalvojat-ryhmään. Lisätietoja SUA:n määrittämisestä suorittamaan tiedostoja, joiden setuid- tai setgid-bitti on aktiivinen, on ladattavan UNIX-pohjaisten sovellusten alijärjestelmän apuohjelmien ja SDK:n paketin mukana toimitetuissa ohjetiedostoissa.

Funktioiden setuid(2), setgid(2) ja chroot(2) käyttäminen edellyttää, että prosessilla on voimassa oleva UID-tunnus, joka vastaa järjestelmätiliä, paikallisen toimialueen järjestelmänvalvojan tiliä tai ensisijaisen toimialueen järjestelmänvalvojan tiliä. Paikallisen järjestelmänvalvojan tili voi vaihtaa UID:n tai GID:n vain toiseksi saman toimialueen tunnukseksi.

Funktioiden chown(1), chmod(1) ja chgrp(1) osalta tilillä on oltava Windowsin käyttöoikeudet SE_BACKUP ja SE_RESTORE, jotta se voisi suorittaa make -toimintoja toisen käyttäjän tai ryhmän omistamille tiedostoille tai muokata toisen käyttäjän omistaman tiedoston käyttöoikeuksia. Nämä oikeudet ovat yleensä järjestelmänvalvojan ja varmuuskopiointioperaattorin tileillä.

Katso myös