Käyttöoikeudet


Käyttäjät ja käyttöoikeus, Tiedosto-oikeudet, Hakemiston oikeudet, Erikoisoikeudet, Oletusoikeudet, Omistajan ja ryhmän vaihtaminen, /etc/passwd-tiedosto

Käyttäjät ja käyttöoikeus

Jos Linuxia ei ole asetettu toimimaan yhden käyttäjän tilassa, jokainen käyttäjä tarvitsee järjestelmään käyttöoikeuden. Käyttöoikeus muodostuu aina käyttäjätunnuksesta (yleensä korkeintaan 8-merkkinen tunnus) sekä salasanasta. Salasana on henkilökohtainen avain käyttäjän tiedostoihin ja kotihakemistoon. Sitä ei pidä koskaan antaa kellekään toiselle. Jos joku toinen tarvitsee järjestelmää, hänelle on parasta antaa oma käyttäjätunnus.


Tiedosto-oikeudet

Linuxin tiedostojen käyttäminen vaatii myös oikeuksia. Oikeuksia jaetaan kolmelle käyttäjäryhmälle:

  1. tiedoston omistaja, user, (u)
  2. ryhmä, jolle tiedosto kuuluu, group (g)
  3. kaikki muut em. ulkopuolelta, other (o), "koko maailma"

Jokaiselle ryhmälle voidaan antaa kolmenlaisia oikeuksia:

  1. lukuoikeus, read (r), tiedostoa saa oikeudenhaltija katsella
  2. kirjoitusoikeus, write (w), tiedostoon saa kirjoittaa ja sitä voi muuttaa
  3. suoritusoikeus, eXecute (x), tiedoston saa suorittaa, jos kyseessä on suorituskelpoinen ohjelma. Hakemiston kohdalla x merkitsee, että hakemistoon saa mennä cd-komennolla.

Näiden lisäksi on käytössä s-oikeus (set user-id), jolloin käyttäjän oikeudet katsotaan tiedoston omistajan kohdalta. Tämän oikeuden myöntämiseen on tavallisella käyttäjällä harvoin tarvetta. Esimerkkinä tämän oikeuden käytöstä voit katsoa tiedostoa /bin/passwd komennolla

ls -l /bin/passwd.

Tällä ohjelmallahan voit vaihtaa salasanaasi. Ohjelma aiheuttaa muutoksen salasanatiedostoihin, joihin sinulla ei ole muuten oikeuksia kirjoittaa. Ojelman /bin/passwd omistaa root, joten saat kirjoituksen tarvitseman ajan käyttää pääkäyttäjän oikeuksia.

Tiedostojen kohdalla käyttöoikeuksia voi muuttaa tiedoston omistaja. Jokaisen tiedoston nimittäin omistaa joku. tiedostojen oikeuksia muutetaan chmod-ohjelmalla.Ohjelman toiminta on seuraava:

chmod <ryhmä><+/-/=><oikeudet> tiedostot
  • "ryhmä" määrittelee, keneen muutos koskee: u = omistaja, g = ryhmä, o = muut, a = kaikki
  • + lisää oikeuksia (aiemmat säilyvät), - vähentää niitä ja = määrittää oikeudet täsmälleen sellaisiksi, kun perässä tulee
  • "oikeudet" esittelee annettavat oikeudet: r = luku-, w = kirjoitus- ja x = suoritusoikeus.
  • "tiedostot" taas on tiedosto(lista), joihin muutos kohdistuu.

Esim:

chmod u+x startti Omistaja lisää itselleen suoritusoikeudet tiedostoon startti. Tätä tarvitaan silloin, kun tehdään komentotiedostoja (vrt. .bat DOS:ssa) ja halutaan suorittaa tiedosto.
chmod go-x tiedosto Omistaja poistaa sekä ryhmältä että muilta käyttäjiltä suoritusoikeuden tiedostolta nimeltään "tiedosto".
chmod g=rx tiedosto Omistaja määrittää ryhmän oikeudeksi tiedostoon "tiedosto" luku- ja suoritusoikeudet.
chmod a+x public_html Kaikki käyttäjäryhmät saavat oikeuksiinsa lisää suoritusoikeuden.

chmod-komentoa voi käyttää näinkin: kuvitellaan oikeudet binääriluvuksi, jossa 1 kertoo oikeuksien olevan "päällä" ja 0 taas niiden olevan "pois päältä":

-rwx r-x r--
 111 101 100
 = 7 = 5 = 4	(8-järjestelmässä [tai 10-järjestelmässä, miten halutaan])

Näin saadaan 3-numeroinen luku kertomaan oikeuksista:

chmod 754 tiedosto antaa yllä esiteltyt oikeudet tiedostolle "tiedosto" (omistaja saa kaikki oikeudet, ryhmä luku- ja suoritusoikeudet ja muut saavat vain lukuoikeuden
man chmod man-komento kertoo lisää chmod-komennosta.

Hakemistojen oikeudet

Hakemisto on oikeuksien suhteen hieman "erikoinen" verrattuna normaaleihin tiedostoihin. Otetaanpa esimerkki:

esimerkki
hakemisto-oikeuksista

Kuvassa on esitetty coffees-niminen hakemisto. Normaalisti hakemistolla on x-oikeus, joka ensimmäisellä rivillä osoitetaan (ls -ld coffees). Seuraaksi chmod -x coffees-komennolla otetaan x-oikeudet pois. Nyt, vaikka hakemistoon onkin lukuoikeus jäljellä, saadaan permission denied-ilmoitus. Hakemistolistauksen katselu vaatii siis x-oikeuksia hakemistoon. Samoin hakemistoon meneminen cd-komennolla tai hakemistosta etsiminen find-komennolla vaatii x-oikeuksia.

Voidaan siis hieman pelkistäen sanoa, että x-oikeus hakemistolle on käytännössä välttämätön, jos halutaan hakemistossa tehdä jotain järkevää. Näin ollen jos jollekin käyttäjäryhmälle halutaan antaa oikeuksia hakemistoon (siis read ja/tai write), pitää antaa myös x-oikeus.


Erikoisoikeudet

Edellä mainittujen oikeuksien (rwx) voidaan myös käyttää hieman erikoisempia oikeuksia. Näitä ovat set-uid, set-gid, ja sticky-bit.

set-uid

Tämä oikeus aiheuttaa sen, että ohjelman suorituksen aikana katsotaan oikeudet todellisuudessa tiedoston omistajan kohdalta. Esimerkkinä olkoon passwd-ohjelma:

set-uid

Linuxissa käyttäjätunnuksia talletetaan /etc/passwd-tiedostossa, jossa jokaiselle käyttäjälle on varattu rivi. Jos riviä ei ole, ei ole käyttäjääkään. Vanhemmissa järjestelmissä myös käyttäjän salasana oli tässä tiedostossa. Nykyisin homma toimii siten, että /etc/passwd-tiedostossa on salasanan kohdalla "x" ja salasanat ovat talletettuna tiedostoon /etc/shadow. Tähän tiedostoon ei ole kuin pääkäyttäjällä lukuoikeudet. /etc/passwd-tiedostoahan saa lukea kuka käyttäjä tahansa. Tällä järjestelyllä lisätään omalta osaltaan järjestelmän tietoturvaa.

Joka tapauksessa kun käyttäjä vaihtaa salasanaansa, hänen pitäisi päästä kirjoittamaan /etc/shadow-tiedostoon uusi salasanansa, vaikkei hänellä ole oikeuksia tähän operaatioon. Tämä tapaus ratkaistaan sillä, että edellä mainitulla passwd-ohjelmalla on s-oikeudet. Näin ollen käyttäjä on ikäänkuin pääkäyttäjänä sen hetken, kun hän käyttää passwd-ohjelmaa.

Hakemistoille ei ole määritelty tälle oikeudelle mitään merkitystä.

set-gid

Set-gid, eli set-group-id taas määrittelee oikeudet ryhmän mukaan. Jos tämä bitti asetetaan hakemistolle päälle, kaikki hakemistoon siirrettävät tiedostot saavat saman ryhmän kuin mihin hakemisto kuuluu riippumatta siitä, mikä näiden ryhmä oli aiemmin.

sticky-bit

setuid-bittiä käytettiin tiedoston omistajalle, setgid-bittiä taas ryhmälle. Muiden käyttäjien kohdalle voidaan asettaa ns. sticky-bit, joka näkyy oikeutena "t" listalla. Tämä aiheuttaa tiedoston kohdalla sen, että tiedosto jätetään muistiin "roikkumaan", että se käynnistyisi seuraavalla kerralla nopeammin. Koska tietokoneiden muistien määrät ovat kasvaneet ja tietokoneet nopeutuneet, tämä toiminto on käynyt varsin turhaksi. Itse asiassa nyky-Linuxeissa tämä ominaisuus on on mukana vain yhteensopivuussyistä, se ei siis tee tiedostojen kohdalla yhtään mitään.

Hakemiston kohdalla tämä oikeus tarkoittaa sitä, että omistaja saa poistaa hakemistosta vain omistamiaan tiedostoja, vaikka hänellä poistamisoikeudet olisivatkin kaikkiin. Tätä käytetään esimerkiksi /tmp-hakemistossa:

t-oikeus hakemistolla

tmp-hakemistoonhan kuka tahansa saa tallettaa tiedostoja, mutta vain omansa saa niistä poistaa.


Oletusoikeudet

Vaikkei käyttäjä koskaan mitään oikeuksia millekään tiedostolle antaisi, jostain sille tiedostolle kuitenkin jotkut oikeudet annetaan. Tällöin puhutaan ns. oletusoikeuksista. Nämä oikeudet näet komennolla umask

Esim:

$ umask
023

umask saattaa antaa em. numerosarjan. Mitä tästä numerosarjasta sitten näemme? Näemme siitä jokaisen käyttäjäryhmän oletusoikeudet. Ja että asiassa olisi mahdollisimman paljon muistettavaa, umask merkitsee ykkösellä niitä oikeuksia, joita ei anneta! Edellä oleva 023 tarkoittaa siis seuraavaa:

 rwx rwx rwx
 0 = 2 = 3 =
 000 010 011

Näin ollen omistajalta ei rajoiteta oikeuksia millään tavoin, ryhmälle ei annetakirjoitusoikeutta ja muille taas ei anneta kirjoitus- eikä suoritusoikeutta.kirjoitusoikeutta ja muille taas ei anneta kirjoitus- eikä suoritusoikeutta.

Oletusoikeuksia voi rajoittaa umask-komennolla seuraavasti:

umask <3-numeroinen sarja>

Esim:

umask 027 omistajan oikeuksia ei rajoiteta mitenkään (000), ryhmä ei saa kirjoitusoikeutta (010) ja muut käyttäjät eivät saa yhtään oikeuksia (111)

On myös syytä huomata, että tiedostojen ja hakemistojen oikeudet poikkeavat toisistaan, kun nämä luodaan:

hakemisto vai tiedosto

Hakemisto siis saa luotaessa myös x-oikeudet, mutta tiedosto ei. Käyttäytyminen selittyy aiemmin esitetyllä näkökannalla: hakemistossa on käytännössä mahdotonta tehdä mitään järkevä ilman x-oikeuksia, tiedosto taas on hyvin harvoin valmiiksi suorituskelpoinen, kun se luodaan.

Esimerkissä esiintynyt touch-komento muuttaa tiedoston aikaleimaa tai jos tiedostoa ei ole, se luo uuden tyhjän tiedoston.

Huom! Näin tehtynä umask-komennon vaikutus kestää vain sen hetkisen istunnon ajan. Kun kirjaudut ulos järjestelmästä, vaikutus lakkaa. Seuraavan kerran kirjautuessasi järjestelmään, sinulla on oletusoikeudet. Jos haluat nämä asetukset pysyviksi, sinun tulee kirjoittaa ko. rivi käyttämäsi komentotulkin sisäänkirjautumistiedostoon (esim. .bashrc, jos käytät bash:ia. (vrt. DOS:n AUTOEXEC.BAT)


Omistajan ja ryhmän vaihtaminen

chown-komento vaihtaa tiedostonomistajaa. Linuxissa ei tiedostoa voi antaa toiselle kuin pääkäyttäjä. Omistajan vaihtamisen estäminen on selkeä tietoturvakysymys (laita tiedostolle SUID-bitti päälle ja anna tiedosto rootille. Jos onnistuisi, olisit luonut huikean tietoturva-aukon järjestelmään. ;-) )

Esim:

chown manu tiedosto antaa tiedoston "tiedosto" käyttäjälle "manu"

chgrp-komennolla taas vaihdetaan tiedoston ryhmää:

chgrp kamut tiedosto vaihtaa tiedoston "tiedosto" ryhmäksi "kamut"

Omistaja voi vaihtaa ryhmää vain niiden ryhmien välillä, joihin hän kuuluu. Normaalisti kun käyttäjä luodaan, hänelle määritelllään ensisijainen ryhmä, johon hän kuuluu (esim.users-ryhmä. Lisäksi hänet voidaan /etc/group-ryhmässä määrittää kuulumaan 15:een toissijaiseen ryhmään. Se, moneenko ryhmään käyttäjä voi kuulua unixeissa, riippuu unix-versiossa. Linuxissa pätee tämä.

man-komennolla lisää tietoa aiheesta.


/etc/passwd-tiedosto

Jokaisen käyttäjän tiedot on kirjattu tiedostoon /etc/passwd. Se ontekstitiedosto, jota jokaisella käyttäjällä on oikeus lukea. Yksi rivi tiedostossa vastaa aina yhtä käyttäjää. Jos käyttäjän käyttäjätunnusta ei löydy täältä, käyttäjää ei ole olemassakaan. Esimerkiksi rivi voi olla seuraavanlainen:

ile:x:4774:140:Ilpo Kuivanen:/home/ile:/bin/bash
 1  2  3    4   5             6          7

Siitä käy ilmi seuraavat asiat:

  1. käyttäjän käyttäjätunnus on "ile"
  2. seuraava kenttä sisältää salasanan. 'x' salasanan kohdalla tarkoittaa, että järjestelmässä on käytössä ns. shadow-password-toiminto. Tällöin salasanat on talletettu erilliseen /etc/shadow-tiedostoon. Sinne ei ole lukuoikeutta kuin pääkäyttäjällä. Salasana on aina Linuxissa salakirjoitettu; ei edes pääkäyttäjä näe sitä. Hän voi tosin vaihtaa salasanan, jos se on päässyt unohtumaan
  3. käyttäjän id-tunnus (4774). Jokainen käyttäjä ja prosessi identifioidaan omalla yksilöllisellä id-tunnuksellaan
  4. käyttäjä kuuluu myös johonkin ryhmään. 140 on ryhmän id-numero
  5. seuraavaksi käyttäjän nimi
  6. käyttäjän kotihakemisto näyttäisi olevan /home/ile
  7. ...ja käyttäjän oletuskomentotulkki on nimeltään "bash"

Kenttiä erottaa toisistaan kaksoispiste.


Alkuun