Ero sivun ”Tiedoston oikeudet” versioiden välillä
Pb (keskustelu | muokkaukset) pEi muokkausyhteenvetoa |
p (→Aiheesta muualla: Murtunut linkki.) |
||
(21 välissä olevaa versiota 10 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
Linuxissa jokaisella [[tiedosto]]lla, [[hakemisto]]lla, [[laitetiedosto]]lla ym. on tietyt oikeudet, jotka kertovat ketkä tiedostoa saavat lukea, kirjoittaa ja suorittaa. | Linuxissa jokaisella [[tiedosto]]lla, [[hakemisto]]lla, [[laitetiedosto]]lla ym. on tietyt oikeudet, jotka kertovat ketkä tiedostoa saavat lukea, kirjoittaa ja suorittaa. | ||
Tässä artikkelissa kerrotaan perinteisistä [[Unix]]-oikeuksista, nykyään voi niiden lisäksi käyttää myös [[ACL]]-oikeuksia. | Tässä artikkelissa kerrotaan perinteisistä [[Unix]]-oikeuksista, nykyään voi niiden lisäksi käyttää myös [[Tiedostojärjestelmän pääsylistat (ACL)|ACL]]-oikeuksia. | ||
==Miksi?== | ==Miksi?== | ||
Rivi 10: | Rivi 10: | ||
Suoritus- ja kirjoitusoikeuksien merkitys on hakemistojen kohdalla erilainen kuin tavallisilla tiedostoilla. Suoritusoikeus tarkoittaa hakemistolle asetettuna oikeutta päästä käsiksi tiedostoon hakemiston kautta. Kirjoitusoikeus taas tarkoittaa oikeutta luoda hakemistoon uusi tiedosto ja siirtää tai poistaa hakemiston sisältämä tiedosto, riippumatta itse tiedoston oikeuksista. | Suoritus- ja kirjoitusoikeuksien merkitys on hakemistojen kohdalla erilainen kuin tavallisilla tiedostoilla. Suoritusoikeus tarkoittaa hakemistolle asetettuna oikeutta päästä käsiksi tiedostoon hakemiston kautta. Kirjoitusoikeus taas tarkoittaa oikeutta luoda hakemistoon uusi tiedosto ja siirtää tai poistaa hakemiston sisältämä tiedosto, riippumatta itse tiedoston oikeuksista. | ||
Oikeus poistaa tiedosto hakemistosta riippuu siis oikeuksista, jotka käyttäjällä on tiedoston sisältämään ''hakemistoon'', ei ''tiedoston'' suojauksista, kuten eräissä muissa käyttöjärjestelmissä. Tämä on loogista, sillä tiedoston poistaminen hakemistosta on hakemiston muokkausta, ja vaatii että käyttäjällä on hakemistoon kirjoitusoikeus. Tiedoston poistaminen hakemistosta poistaa viittauksen (ns. "linkin") tiedostoon hakemistosta, mutta ei välttämättä tuhoa itse tiedostoa – tiedostoon voi olla useampia viittauksia joko samasta tai eri hakemistosta. Kun viimeinen viittaus tiedostoon poistetaan, tiedostolla ei ole enää nimeä tiedostojärjestelmässä. Tällöin käyttöjärjestelmä vapauttaa tiedoston varaamat lohkot massamuistilta. | |||
===Erikoisoikeudet=== | ===Erikoisoikeudet=== | ||
Tiedostoille voidaan lisäksi asettaa niin sanotut '''setuid'''-, '''setgid'''- ja '''sticky bit''' -oikeudet. | Tiedostoille voidaan lisäksi asettaa niin sanotut '''[[setuid]]'''-, '''setgid'''- ja '''sticky bit''' -oikeudet. | ||
Suoritettavan ohjelman osalta setuid- ja setgid-oikeudet 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]] setgid tarkoittaa, että sinne luotavat tiedostot saavat oletuksena saman ryhmän kuin hakemistokin. | Suoritettavan ohjelman osalta setuid- ja setgid-oikeudet 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]] setgid tarkoittaa, että sinne luotavat tiedostot saavat oletuksena saman ryhmän kuin hakemistokin. Hakemiston sgid-bitti ei vaikuta hakemistoon siirrettäviin tiedostoihin. | ||
Sticky bit (suomeksi tahmabitti) hakemistossa estää muita kuin omistajaa, [[pääkäyttäjä]]ä ja kirjoitusoikeuden omaavaa hävittämästä tiedostoa, vaikka hänellä olisi hakemistoon kirjoitusoikeus (tätä käytetään esimerkiksi /tmp-hakemistossa). Tavallisen tiedoston osalta sillä ei ole vaikutusta. | Sticky bit (suomeksi tahmabitti) hakemistossa estää muita kuin omistajaa, [[pääkäyttäjä]]ä ja kirjoitusoikeuden omaavaa hävittämästä tiedostoa, vaikka hänellä olisi hakemistoon kirjoitusoikeus (tätä käytetään esimerkiksi /tmp-hakemistossa). Tavallisen tiedoston osalta sillä ei ole vaikutusta. | ||
Rivi 20: | Rivi 22: | ||
==Oikeuksien esittäminen== | ==Oikeuksien esittäminen== | ||
Tiedoston oikeudet voidaan merkitä joko numerosarjalla (esimerkiksi <tt>660</tt>) tai kirjainyhdistelmällä (esimerkiksi <tt>-rw-r-----</tt>). | Tiedoston oikeudet voidaan merkitä joko numerosarjalla (esimerkiksi <tt>660</tt>) tai kirjainyhdistelmällä (esimerkiksi <tt>-rw-r-----</tt>). | ||
0 --- ei oikeuksia | |||
1 --x suoritus | |||
2 -w- kirjoitus | |||
3 -wx kirjoitus ja suoritus (2+1) | |||
4 r-- luku | |||
5 r-x luku ja suoritus (4+1) | |||
6 rw- luku ja kirjoitus (4+2) | |||
7 rwx luku, kirjoitus ja suoritus (4+2+1) | |||
===Numeromuoto=== | ===Numeromuoto=== | ||
Rivi 26: | Rivi 37: | ||
*1 = suoritus | *1 = suoritus | ||
*2 = kirjoitus | *2 = kirjoitus | ||
*3 = kirjoitus ja suoritus (1 | *3 = kirjoitus ja suoritus (2+1) | ||
*4 = luku | *4 = luku | ||
*5 = luku ja suoritus (1 | *5 = luku ja suoritus (4+1) | ||
*6 = luku ja kirjoitus (2 | *6 = luku ja kirjoitus (4+2) | ||
*7 = luku, kirjoitus ja suoritus ( | *7 = luku, kirjoitus ja suoritus (4+2+1) | ||
Jolloin esimerkiksi 000 piilottaisi tiedoston sisällön kaikilta eikä antaisi kenenkään muokata sitä (HUOM! omistaja ja [[pääkäyttäjä]] voisivat kuitenkin muuttaa oikeuksia) ja 777 antaisi kaikille kaikki mahdolliset oikeudet. | Jolloin esimerkiksi 000 piilottaisi tiedoston sisällön kaikilta eikä antaisi kenenkään muokata sitä (HUOM! omistaja ja [[pääkäyttäjä]] voisivat kuitenkin muuttaa oikeuksia) ja 777 antaisi kaikille kaikki mahdolliset oikeudet. | ||
Windowsin puolellakin näihin numeroihin voi törmätä nettisivuja tehdessä ja niitä ftp-ohjelmilla palvelimelle lähetellessä. Siellä oikeuksiksi määritellään tavallisesti 774, jolloin siis satunnainen netinkäyttäjä saa oikeuden 4. | |||
Erikoisoikeuksien numerot: | |||
*0 ei erikoisoikeuksia | |||
*1 sticky bit, tahmabitti | |||
*2 sgid | |||
*4 suid | |||
Esimerkiksi jaetun kansion oikeuksiksi sopii 2770 tai 2750. | |||
===Kirjainmuoto=== | ===Kirjainmuoto=== | ||
Rivi 65: | Rivi 86: | ||
Erikoisoikeudet (setuid, setgid ja sticky bit) voidaan asettaa joko numeerisesti (4000, 2000 ja 1000 ylläselitetyn mukaisesti) tai kirjaimin (u+s, g+s ja +t). | Erikoisoikeudet (setuid, setgid ja sticky bit) voidaan asettaa joko numeerisesti (4000, 2000 ja 1000 ylläselitetyn mukaisesti) tai kirjaimin (u+s, g+s ja +t). | ||
Jos esimerkiksi käyttäjän kotihakemiston oikeudet ovat menneet jostain syystä sekaisin, ne voidaan palauttaa seuraavalla komennolla: | |||
chmod -R ug+rwX /home/käyttäjä | |||
===Oletusoikeudet=== | ===Oletusoikeudet=== | ||
Rivi 73: | Rivi 97: | ||
Tavallisesti tämä tapahtuu klikkaamalla tiedoston kuvaketta [[hiiri|hiiren]] kakkosnäppäimellä ja valitsemalla ''Ominaisuudet''. | Tavallisesti tämä tapahtuu klikkaamalla tiedoston kuvaketta [[hiiri|hiiren]] kakkosnäppäimellä ja valitsemalla ''Ominaisuudet''. | ||
==Esimerkkioikeuksia palvelinkäyttöön== | |||
644 – Tavallinen tiedosto. <br> | |||
700 – Jotkin skriptit. Hakemistot, joiden sisältö ei näy selaimen kautta.<br> | |||
711 – Hakemisto ilman tiedostolistausta. Sisällön voi kuitenkin lukea, jos tietää osoitteen.<br> | |||
755 – Hakemisto, josta näytetään tiedostolistaus.<br> | |||
777 – PHP-skripteissä ''joillakin'' palvelimilla safemoden vuoksi. Käytettävä varoen! | |||
== Katso myös == | == Katso myös == | ||
Rivi 79: | Rivi 110: | ||
*[[Chgrp]] - asettaa tiedoston [[ryhmä]]n | *[[Chgrp]] - asettaa tiedoston [[ryhmä]]n | ||
*[[Chattr]] - asettaa tiedostoattribuutteja | *[[Chattr]] - asettaa tiedostoattribuutteja | ||
[[Luokka:Järjestelmä]] | [[Luokka:Järjestelmä]] | ||
[[Luokka:Ohjeet]] | [[Luokka:Ohjeet]] | ||
[[Luokka:Tiedostojärjestelmät]] | [[Luokka:Tiedostojärjestelmät]] | ||
[[Luokka:Käyttäjät ja ryhmät]] |
Nykyinen versio 6. marraskuuta 2020 kello 10.07
Linuxissa jokaisella tiedostolla, hakemistolla, laitetiedostolla ym. on tietyt oikeudet, jotka kertovat ketkä tiedostoa saavat lukea, kirjoittaa ja suorittaa.
Tässä artikkelissa kerrotaan perinteisistä Unix-oikeuksista, nykyään voi niiden lisäksi käyttää myös ACL-oikeuksia.
Miksi?[muokkaa]
Joskus voi tuntua tyhmältä, että esimerkiksi voidakseen suorittaa ladatun ohjelman, on sille erikseen annettava suoritusoikeus. Tiedostojen erilliset oikeudet parantavat 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.
Oikeustyypit[muokkaa]
Jokaisella tiedostolla on kolme erillistä oikeutta: kirjoitusoikeus, lukuoikeus ja suoritusoikeus. Voidaan esimerkiksi määrätä, että tiedostoa saavat lukea kaikki käyttäjät mutta vain root kirjoittaa ja suorittaminen ohjelmatiedostona ei ole sallittua kenellekään. Tällaisia tiedostoja ovat esimerkiksi lähes kaikki /etc-hakemiston asetustiedostot.
Suoritus- ja kirjoitusoikeuksien merkitys on hakemistojen kohdalla erilainen kuin tavallisilla tiedostoilla. Suoritusoikeus tarkoittaa hakemistolle asetettuna oikeutta päästä käsiksi tiedostoon hakemiston kautta. Kirjoitusoikeus taas tarkoittaa oikeutta luoda hakemistoon uusi tiedosto ja siirtää tai poistaa hakemiston sisältämä tiedosto, riippumatta itse tiedoston oikeuksista.
Oikeus poistaa tiedosto hakemistosta riippuu siis oikeuksista, jotka käyttäjällä on tiedoston sisältämään hakemistoon, ei tiedoston suojauksista, kuten eräissä muissa käyttöjärjestelmissä. Tämä on loogista, sillä tiedoston poistaminen hakemistosta on hakemiston muokkausta, ja vaatii että käyttäjällä on hakemistoon kirjoitusoikeus. Tiedoston poistaminen hakemistosta poistaa viittauksen (ns. "linkin") tiedostoon hakemistosta, mutta ei välttämättä tuhoa itse tiedostoa – tiedostoon voi olla useampia viittauksia joko samasta tai eri hakemistosta. Kun viimeinen viittaus tiedostoon poistetaan, tiedostolla ei ole enää nimeä tiedostojärjestelmässä. Tällöin käyttöjärjestelmä vapauttaa tiedoston varaamat lohkot massamuistilta.
Erikoisoikeudet[muokkaa]
Tiedostoille voidaan lisäksi asettaa niin sanotut setuid-, setgid- ja sticky bit -oikeudet.
Suoritettavan ohjelman osalta setuid- ja setgid-oikeudet tarkoittavat, että ohjelma suoritetaan omistajan tai ryhmän oikeuksilla riippumatta siitä, kuka ohjelman ajaa (kunhan hänellä on siihen suoritusoikeus). Hakemiston osalta setgid tarkoittaa, että sinne luotavat tiedostot saavat oletuksena saman ryhmän kuin hakemistokin. Hakemiston sgid-bitti ei vaikuta hakemistoon siirrettäviin tiedostoihin.
Sticky bit (suomeksi tahmabitti) hakemistossa estää muita kuin omistajaa, pääkäyttäjää ja kirjoitusoikeuden omaavaa hävittämästä tiedostoa, vaikka hänellä olisi hakemistoon kirjoitusoikeus (tätä käytetään esimerkiksi /tmp-hakemistossa). Tavallisen tiedoston osalta sillä ei ole vaikutusta.
Oikeuksien esittäminen[muokkaa]
Tiedoston oikeudet voidaan merkitä joko numerosarjalla (esimerkiksi 660) tai kirjainyhdistelmällä (esimerkiksi -rw-r-----).
0 --- ei oikeuksia 1 --x suoritus 2 -w- kirjoitus 3 -wx kirjoitus ja suoritus (2+1) 4 r-- luku 5 r-x luku ja suoritus (4+1) 6 rw- luku ja kirjoitus (4+2) 7 rwx luku, kirjoitus ja suoritus (4+2+1)
Numeromuoto[muokkaa]
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 (2+1)
- 4 = luku
- 5 = luku ja suoritus (4+1)
- 6 = luku ja kirjoitus (4+2)
- 7 = luku, kirjoitus ja suoritus (4+2+1)
Jolloin esimerkiksi 000 piilottaisi tiedoston sisällön kaikilta eikä antaisi kenenkään muokata sitä (HUOM! omistaja ja pääkäyttäjä voisivat kuitenkin muuttaa oikeuksia) ja 777 antaisi kaikille kaikki mahdolliset oikeudet.
Windowsin puolellakin näihin numeroihin voi törmätä nettisivuja tehdessä ja niitä ftp-ohjelmilla palvelimelle lähetellessä. Siellä oikeuksiksi määritellään tavallisesti 774, jolloin siis satunnainen netinkäyttäjä saa oikeuden 4.
Erikoisoikeuksien numerot:
- 0 ei erikoisoikeuksia
- 1 sticky bit, tahmabitti
- 2 sgid
- 4 suid
Esimerkiksi jaetun kansion oikeuksiksi sopii 2770 tai 2750.
Kirjainmuoto[muokkaa]
Kirjainmuoto on kenties hieman monimutkaisempi kuin numeromuoto. Tarkastellaan esimerkkinä tiedostoa, jonka oikeudet ovat -rwxr-xr-x.
Ensimmäinen merkki - tarkoittaa tavallista tiedostoa (jos sen tilalla olisi d, olisi kyseessä hakemisto). Ensimmäisenä oleva l-kirjain merkitsisi symbolista linkkiä. Muitakin mahdollisia merkkejä ovat esimerkiksi merkkilaite (c), lohkolaite (b), nimetty putki (p) ja socket (s).
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ä yllä).
Seuraavat kolme merkkiä taas ovat vastaavalla tavalla ryhmän oikeudet, esimerkissä r-x eli luku- ja suoritusoikeudet mutta ei kirjoitusoikeuksia. Viimeiset kolme merkkiä ovat muiden oikeudet.
Jos tiedoston setuid-bitti on päällä, näkyy omistajan x-kirjaimen kohdalla S-kirjain. Jos setgid-bitti on päällä, näkyy S-kirjain ryhmän x-kirjaimen paikalla. Mikäli näissä kentissä on alkuaan x-kirjain (ts suoritusoikeus on päällä), näkyy s-kirjain pienenä. Jos tiedostolle on asetettu sticky bit, näkyy listan lopussa iso T-kirjain.
Jos sekä setuid-, setgid- että sticky-bitit olisivat päällä ja vain tiedoston omistajalla olisi luku-, kirjoitus- ja suoritusoikeudet, näyttäisi oikeuslista siis seuraavalta: -rws--S--T.
Oikeuksien asettaminen[muokkaa]
Tiedoston tai hakemiston oikeudet asetetaan komentorivillä käyttäen chmod-ohjelmaa. Tiedoston omistaja ja pääkäyttäjä voivat muuttaa sen oikeuksia esimerkiksi komennolla
chmod 760 tiedosto
Tämä antaisi 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 tiedosto on hakemisto, muutetaan myös jokaisen alihakemiston ja niiden alihakemistojen tiedostojen oikeudet.
Oikeudet voidaan asettaa myös käyttäen kirjainmuotoa. Voidaan esimerkiksi antaa komento
chmod o+r tiedosto
mikä 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). Myös kohteeseen voi yhdistää useampia kirjaimia, esimerkiksi go=rw.
Ryhmämerkintä "a" tarkoittaa samaa kuin "ugo". Mahdollisia oikeuksia ovat r, w ja x sekä X, joka lisää suoritusoikeuden, jos sellainen ennestään on jollakulla tai kyseessä on hakemisto, ja u, g tai o, jotka asettavat oikeudet käyttäjän, ryhmän tai muiden 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).
Erikoisoikeudet (setuid, setgid ja sticky bit) voidaan asettaa joko numeerisesti (4000, 2000 ja 1000 ylläselitetyn mukaisesti) tai kirjaimin (u+s, g+s ja +t).
Jos esimerkiksi käyttäjän kotihakemiston oikeudet ovat menneet jostain syystä sekaisin, ne voidaan palauttaa seuraavalla komennolla:
chmod -R ug+rwX /home/käyttäjä
Oletusoikeudet[muokkaa]
Luotaville tiedostoille voi asettaa oletusoikeudet komennolla umask.
Graafiset vaihtoehdot[muokkaa]
Tiedostojen oikeuksia voi muuttaa myös graafisesti käyttäen jotakin tiedostonhallintaohjelmaa, kuten Konqueroria, Nautilusta tai Thunaria.
Tavallisesti tämä tapahtuu klikkaamalla tiedoston kuvaketta hiiren kakkosnäppäimellä ja valitsemalla Ominaisuudet.
Esimerkkioikeuksia palvelinkäyttöön[muokkaa]
644 – Tavallinen tiedosto.
700 – Jotkin skriptit. Hakemistot, joiden sisältö ei näy selaimen kautta.
711 – Hakemisto ilman tiedostolistausta. Sisällön voi kuitenkin lukea, jos tietää osoitteen.
755 – Hakemisto, josta näytetään tiedostolistaus.
777 – PHP-skripteissä joillakin palvelimilla safemoden vuoksi. Käytettävä varoen!
Katso myös[muokkaa]
- Kansion yhteiskäyttö ryhmässä
- Chown - asettaa tiedoston omistajan
- Chgrp - asettaa tiedoston ryhmän
- Chattr - asettaa tiedostoattribuutteja