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:
- tiedoston omistaja, user, (u)
- ryhmä, jolle tiedosto kuuluu, group (g)
- kaikki muut em. ulkopuolelta, other (o), "koko maailma"
Jokaiselle ryhmälle voidaan antaa kolmenlaisia oikeuksia:
- lukuoikeus, read (r), tiedostoa saa oikeudenhaltija katsella
- kirjoitusoikeus, write (w), tiedostoon saa kirjoittaa ja sitä voi muuttaa
- 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
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:
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:
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:
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 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 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:
- käyttäjän käyttäjätunnus on "ile"
- 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
- käyttäjän id-tunnus (4774). Jokainen käyttäjä ja prosessi
identifioidaan omalla yksilöllisellä id-tunnuksellaan
- käyttäjä kuuluu myös
johonkin ryhmään. 140 on ryhmän id-numero
- seuraavaksi käyttäjän nimi
- käyttäjän kotihakemisto näyttäisi olevan
/home/ile
- ...ja
käyttäjän oletuskomentotulkki on nimeltään "bash"
Kenttiä erottaa toisistaan
kaksoispiste.
Alkuun
|