Ero sivun ”Tiedoston oikeudet” versioiden välillä
Rivi 40: | Rivi 40: | ||
Hakemiston kohdalla suoritusoikeus tarkoittaa oikeutta päästä käsiksi tiedostoon hakemiston kautta. Huomaa myös, että kirjoitusoikeus hakemistoon tarkoittaa oikeutta siirtää tai poistaa tiedosto, riippumatta itse tiedoston oikeuksista. | Hakemiston kohdalla suoritusoikeus tarkoittaa oikeutta päästä käsiksi tiedostoon hakemiston kautta. Huomaa myös, että kirjoitusoikeus hakemistoon tarkoittaa oikeutta siirtää tai poistaa tiedosto, riippumatta itse tiedoston oikeuksista. | ||
Yllä lueteltujen oikeuksien lisäksi tiedostolle voi asettaa suid-, sgid- tai "sticky"-bitit. Suoritettavan ohjelman osalta ensimmäiset tarkoittavat, että ohjelma suoritetaan omistajan tai ryhmän oikeuksilla riippumatta siitä kuka ohjelman ajaa (kunhan hänellä on siihen suoritusoikeus), [Kansion yhteiskäyttö ryhmässä|hakemiston osalta sgid] tarkoittaa, että sinne luotavat tiedostot saavat oletuksena saman ryhmän kuin hakemistokin. Sticky bit hakemistossa estää muita kuin omistajaa, roottia ja kirjoitusoikeuden omaavaa hävittämästä tiedostoa, vaikka hänellä olisi hakemistoon kirjoitusoikeus (tätä käytetään esimerkiksi /tmp-hakemistossa), tiedoston osalta tulkinta vaihtelee. Nämä bitit asetetaan joko numeerisesti (4000, 2000 ja 1000 ylläselitetyn mukaisesti) tai symbolisesti (u+s, g+s ja +t). | Yllä lueteltujen oikeuksien lisäksi tiedostolle voi asettaa suid-, sgid- tai "sticky"-bitit. Suoritettavan ohjelman osalta ensimmäiset tarkoittavat, että ohjelma suoritetaan omistajan tai ryhmän oikeuksilla riippumatta siitä kuka ohjelman ajaa (kunhan hänellä on siihen suoritusoikeus), [[Kansion yhteiskäyttö ryhmässä|hakemiston osalta sgid]] tarkoittaa, että sinne luotavat tiedostot saavat oletuksena saman ryhmän kuin hakemistokin. Sticky bit hakemistossa estää muita kuin omistajaa, roottia ja kirjoitusoikeuden omaavaa hävittämästä tiedostoa, vaikka hänellä olisi hakemistoon kirjoitusoikeus (tätä käytetään esimerkiksi /tmp-hakemistossa), tiedoston osalta tulkinta vaihtelee. Nämä bitit asetetaan joko numeerisesti (4000, 2000 ja 1000 ylläselitetyn mukaisesti) tai symbolisesti (u+s, g+s ja +t). | ||
Tiedostojen oikeuksia voi toki muuttaa myös graafisesti käyttäen jotain tiedostonhallintaohjelmaa, esimerkiksi [[Konqueror]]ia. | Tiedostojen oikeuksia voi toki muuttaa myös graafisesti käyttäen jotain tiedostonhallintaohjelmaa, esimerkiksi [[Konqueror]]ia. |
Versio 7. lokakuuta 2008 kello 11.50
Linuxissa jokaisella tiedostolla, hakemistolla, lohkolaitteella yms. on tietyt oikeudet, jotka kertovat ketkä tiedostoa saavat lukea, kirjoittaa ja suorittaa.
Miksi?
Joskus voi tuntua typerältä, että esimerkiksi voidakseen suorittaa ladatun ohjelman on ensin erikseen annettava sille suoritusoikeus. Tiedostojen erilliset oikeudet lisäävät kuitenkin tietoturvaa, kun esimerkiksi tavallinen käyttäjä ei pysty lukemaan toisen käyttäjän tiedostoja tai ei pääse vahingossa suorittamaan virusta tai muuta haittaohjelmaa.
Oikeudet
Jokaisella tiedostolla on kolme erillistä oikeutta: kirjoitusoikeus, lukuoikeus ja suoritusoikeus. Voidaan esimerkiksi määrätä, että tiedostoa saa lukea kaikki käyttäjät mutta vain root kirjoittaa ja suorittaminen ei ole sallittua kenellekään. Tällaisia tiedostoja ovat esimerkiksi lähes kaikki /etc-hakemiston asetustiedostot.
Tiedoston oikeudet voidaan merkitä joko numerosarjalla (esimerkiksi 660) tai kirjainyhdistelmällä (esimerkiksi -rw-r-----). Pureudutaan ensin tuohon numeroyhdistelmään.
Numeroyhdistelmässä ensimmäinen numero tarkoittaa tiedoston omistajan oikeuksia, toinen tiedoston ryhmän oikeuksia ja kolmas muiden oikeuksia. Jokaisella tiedostolla on omistaja (joka on oletuksena tiedoston luoja) ja se kuuluu johonkin käyttäjäryhmään. Mahdolliset arvot jokaiselle numerolle ovat:
- 0 = ei oikeuksia
- 1 = suoritus
- 2 = kirjoitus
- 3 = kirjoitus ja suoritus (1+2)
- 4 = luku
- 5 = luku ja suoritus (1+4)
- 6 = luku ja kirjoitus (2+4)
- 7 = luku, kirjoitus ja suoritus (1+2+4)
Jolloin esimerkiksi 000 piilottaisi tiedoston sisällön kaikilta eikä antaisi kenenkään muokata sitä (huom! omistaja ja root voisivat kuitenkin muuttaa oikeuksia!) ja 777 antaisi kaikille kaikki mahdolliset oikeudet (huono tietoturvan kannalta).
Kirjainyhdistelmä taas on ehkäpä hieman monimutkaisempi. Tarkastellaan esimerkkinä tiedostoa, jonka oikeudet ovat -rwxr-xr-x. Ensimmäinen merkki - tarkoittaa tiedostoa (jos sen tilalla olisi d, kyseessä olisi hakemisto). Ensimmäisenä oleva l-kirjain merkitsisi symbolista linkkiä. Muitakin mahdollisia merkkejä ovat esimerkiksi merkkilaite (c), lohkolaite (b) ja putki (p). Seuraavat kolme merkkiä ovat tiedoston omistajan oikeudet. Mahdollisia merkkejä ovat r (lukuoikeus), w (kirjoitusoikeus) ja x (suoritusoikeus). - tarkoittaa että oikeuksia ei ole lainkaan. Esimerkiksi omistajalla olisi luku- ja kirjoitusoikeus merkkijonolla rw- ja kaikki oikeudet (eli myös suoritusoikeus) merkkijonolla rwx (kuten esimerkissämme).
Seuraavat kolme merkkiä taas ovat vastaavalla tavalla ryhmän oikeudet, esimerkissämme r-x eli luku- ja suoritusoikeudet mutta ei kirjoitusoikeuksia. Viimeiset kolme merkkiä ovat muiden oikeudet.
Oikeuksien asettaminen
Tiedoston tai hakemiston oikeudet asetetaan käyttäen chmod-ohjelmaa. Tiedoston (tai hakemiston tai vastaavan) omistaja - ja tietysti myös root - voivat muuttaa oikeuksia yksinkertaisesti komennolla
chmod 760 tiedosto
Joka antaisi siis tiedoston omistajalle kaikki oikeudet, ryhmälle luku- ja kirjoitusoikeuden ja piilottaisi tiedoston sisällön muilta. Jos komennon kanssa käytetään valitsinta -R ja tiedoston paikalla on jokin hakemisto, muutetaan myös jokaisen alihakemiston ja alihakemiston tiedoston oikeudet.
Oikeudet voidaan asettaa myös käyttäen merkkijonoja. Voidaan komentaa esimerkiksi
chmod o+r tiedosto
joka antaisi muille lukuoikeudet. Syntaksi on seuraavanlainen: chmod <kenelle> <+/-/=> <oikeus> tiedosto. Oikeudet voidaan antaa joko omistajalle u (user), ryhmälle g (group), muille o (other) tai kaikille a (all). Kohteeseenkin voi yhdistää useampia kirjaimia, esim go=rw. Ryhmämerkintä "a" tarkoittaa siis samaa kuin "ugo". Mahdollisia oikeuksia ovat edellä esitellyt r, w ja x, sekä X, joka lisää suoritusoikeuden, jos sellainen ennestään on jollakulla tai kyseessä on hakemisto, ja u, g tai o, joka asettaa oikeudet käyttäjän, ryhmän tai muitten mukaan.
+ tarkoittaa että tietty oikeus lisätään ja - ottaa tietyn oikeuden pois. = merkkiä käytettäessä tietty oikeusmerkkijono asetetaan, eli esimerkiksi
chmod g=rw tiedosto
asettaisi ryhmälle luku- ja kirjoitusoikeuden riippumatta aiemmista oikeuksista (eli suoritusoikeutta ei enää ole jos sellainen aiemmin oli).
Hakemiston kohdalla suoritusoikeus tarkoittaa oikeutta päästä käsiksi tiedostoon hakemiston kautta. Huomaa myös, että kirjoitusoikeus hakemistoon tarkoittaa oikeutta siirtää tai poistaa tiedosto, riippumatta itse tiedoston oikeuksista.
Yllä lueteltujen oikeuksien lisäksi tiedostolle voi asettaa suid-, sgid- tai "sticky"-bitit. Suoritettavan ohjelman osalta ensimmäiset tarkoittavat, että ohjelma suoritetaan omistajan tai ryhmän oikeuksilla riippumatta siitä kuka ohjelman ajaa (kunhan hänellä on siihen suoritusoikeus), hakemiston osalta sgid tarkoittaa, että sinne luotavat tiedostot saavat oletuksena saman ryhmän kuin hakemistokin. Sticky bit hakemistossa estää muita kuin omistajaa, roottia ja kirjoitusoikeuden omaavaa hävittämästä tiedostoa, vaikka hänellä olisi hakemistoon kirjoitusoikeus (tätä käytetään esimerkiksi /tmp-hakemistossa), tiedoston osalta tulkinta vaihtelee. Nämä bitit asetetaan joko numeerisesti (4000, 2000 ja 1000 ylläselitetyn mukaisesti) tai symbolisesti (u+s, g+s ja +t).
Tiedostojen oikeuksia voi toki muuttaa myös graafisesti käyttäen jotain tiedostonhallintaohjelmaa, esimerkiksi Konqueroria.