Ero sivun ”Tiedostojärjestelmän pääsylistat (ACL)” versioiden välillä

Siirry navigaatioon Siirry hakuun
Tarkennettu ACL-sääntöjä.
p (pääsyoikeuslista → pääsylista.)
(Tarkennettu ACL-sääntöjä.)
Rivi 29: Rivi 29:
==Pääsylistojen toiminta==
==Pääsylistojen toiminta==


Tiedostojärjestelmä jakaa käyttäjät kolmeen eri luokkaan: ''tiedoston omistaja'', ''ryhmä'' ja ''muut''. Jokaiseen näistä luokista liittyy kolme eri pääsyoikeutta: lukuoikeus (<tt>r</tt>), kirjoitusoikeus (<tt>w</tt>) ja suoritusoikeus (<tt>x</tt>). Perinteisessä Unixin tiedostomallissa tiedostoon (tai hakemistoon) liittyy yksi omistaja ja yksi ryhmä. 'Muut käyttäjät'-joukon muodostavat kaikki ne käyttäjät, jotka eivät kuulu ryhmään eikä ole tiedoston omistaja.
Tiedostojärjestelmä jakaa käyttäjät kolmeen eri luokkaan: ''tiedoston omistaja'', ''ryhmä'' ja ''muut''. Jokaiseen näistä luokista liittyy kolme eri pääsyoikeutta: lukuoikeus (<tt>r</tt>), kirjoitusoikeus (<tt>w</tt>) ja suoritusoikeus (<tt>x</tt>). Perinteisessä Unixin tiedostomallissa tiedostoon (tai hakemistoon) liittyy yksi omistaja ja yksi ryhmä, jota sanotaan ryhmäomistajaksi. 'Muut käyttäjät'-joukon muodostavat kaikki ne käyttäjät, jotka eivät kuulu ryhmään eikä ole tiedoston omistaja.


Pääsylistat laajentavat tätä mallia siten, että tiedostoon voidaan liittää useampia käyttäjiä ja ryhmiä, joilla jokaisella voi olla omat pääsyehdot tiedostoon. Esimerkiksi ryhmälle 'toimitus' voidaan määritellä '<tt>rw-</tt>'-oikeudet ja ryhmälle 'julkaisu' vaikkapa oikeudet '<tt>r--</tt>'. Tiedostolla on edelleen yksi omistaja ja ensisijainen ryhmä, jotka näkyvät '<tt>ls -l</tt>' -komennolla.
Pääsylistat laajentavat tätä mallia siten, että tiedostoon voidaan liittää useampia käyttäjiä ja ryhmiä, joilla jokaisella voi olla omat pääsyehdot tiedostoon. Esimerkiksi ryhmälle 'toimitus' voidaan määritellä '<tt>rw-</tt>'-oikeudet ja ryhmälle 'julkaisu' vaikkapa oikeudet '<tt>r--</tt>'. Tiedostolla on edelleen yksi omistaja ja ensisijainen ryhmä, jotka näkyvät '<tt>ls -l</tt>' -komennolla.


Tiedoston omistajaksi ei voi liittää useampaa omistajaa, ainoastaan yksi käyttäjä kuuluu luokkaan ''tiedoston omistaja''. (Tiedoston omistajaa voi toki vaihtaa chown-komennolla.) Kuten aiemmin mainittiin, tiedostoon voi liittää yksittäisiä käyttäjiä, mutta näistä käyttäjistä ei siis tule tiedoston omistajia, vaan ne muodostavat yhden käyttäjän mini-ryhmiä. Toisin sanoen, tiedostoon liitetty käyttäjä kuuluu myös luokkaan ''ryhmä''.
Tiedoston omistajaksi ei voi liittää useampaa omistajaa, ainoastaan yksi käyttäjä kuuluu luokkaan ''tiedoston omistaja''. Tiedoston omistajaa voi toki vaihtaa chown-komennolla. Kuten aiemmin mainittiin, tiedostoon voi liittää yksittäisiä käyttäjiä, mutta näistä käyttäjistä ei siis tule tiedoston omistajia, vaan ne muodostavat yhden käyttäjän mini-ryhmiä. Toisin sanoen, tiedostoon liitetty käyttäjä kuuluu myös luokkaan ''ryhmä''.


===Algoritmi===
===Algoritmi===
Rivi 40: Rivi 40:


# Jos uid = tiedoston omistajan id, pääsy päätellään ''tiedoston omistaja'' -luokan suojausbiteistä.
# Jos uid = tiedoston omistajan id, pääsy päätellään ''tiedoston omistaja'' -luokan suojausbiteistä.
# Jos uid löytyy tiedostoon liitetyn pääsylistan yksittäisten käyttäjien joukosta, pääsy päätellään tämän listan alkion mukaan.
# Jos uid löytyy tiedostoon liitetyn pääsylistan yksittäisten käyttäjien joukosta, pääsy päätellään tämän listan alkion mukaan (*).
# Jos jokin prosessin gid = tiedoston ryhmäomistajan id, pääsy päätellään tämän listan alkion mukaan.
# Jos jokin prosessin gid = tiedoston ryhmäomistajan id, pääsy päätellään tämän listan alkion mukaan (*).
# Tarkastellaan niitä pääsylistan nimettyjen ryhmien alkioita, joissa on mikä tahansa prosessin gideistä. Jos mikään täsmäävistä listan alkioista ei sisällä haluttua pääsyoikeutta, pääsy evätään, muussa tapauksessa siirrytään kohtaan 5.
# Tarkastellaan niitä pääsylistan nimettyjen ryhmien alkioita, joissa on mikä tahansa prosessin gideistä. Jos jokin näistä alkioista sisältää halutun pääsyoikuden, pääsy sallitaan (*), muussa tapauksessa pääsy evätään. Jos mikään listan alkioista ei täsmää prosessin gidien kanssa, siirrytään kohtaan 5.
# Pääsy päätellään pääsylistan <tt>mask</tt> -arvosta.
# Pääsy päätellään ''muut''-luokan suojausbiteistä.
# Pääsy päätellään ''muut''-luokan suojausbiteistä.


Mask-kenttä ansaitsee maininnan tässä yhteydessä. Linux noudattaa POSIX.1-standardia, joka sanoo, että tiedoston ryhmäsuojausbitit (siis ne jotka ovat näkyvillä <tt>ls -l</tt> komennon tulosteessa) määräävät mikä suojaus tiedostolla on kun siihen sovelletaan ''ryhmä''-luokan suojausmoodia. Pääsylistoilla on kuitenkin mahdollista antaa muille ryhmille kuin tiedoston omistajaryhmälle vapaampi suojaus kuin mitä ryhmäsuojauksella on. Esimerkiksi, jos tiedoston moodi on:
(*) Tähdellä merkityissä kohdissa suoritetaan lisätarkistus pääsylistan mask-alkiota vastaan. Jos mask-kenttä ei sisällä haluttua oikeutta, pääsy evätään.
 
Nämä säännöt saattavat vaikuttaa monimutkaisilta, varsinkin kohta 4. Ne ovat kuitenkin yhteensopivia Unixin perinteisen tiedostojen suojausmallin kanssa, jonka mukaan suojaus päätellään käyttäjään tarkimmin täsmäävän säännön mukaan. Tiedoston omistajaan sovelletaan vain ja ainoastaan ''tiedoston omistaja'' -luokan suojausbittejä. Jos käyttäjä ei ole tiedoston omistaja, mutta kuuluu tiedoston omistajaryhmään, sovelletaan vain ''ryhmä''-luokan suojausbittejä, ja vain muissa tapauksissa sovelletaan ''muut''-luokan suojausbittejä. Tämä tarkoittaa käytännössä sitä, että tiedoston omistaja voi halutessaan sulkea itseltään pääsyn tiedostoon, mutta sallia sen muille (esimerkiksi suojauksella <tt>----rwxrwx</tt>). Samalla tavalla tiedostoon pääsy voidaan estää tiedoston omistajaryhmään kuuluville, mutta sallia muille (esimerkiksi suojauksella <tt>-rwx---rwx</tt>).
 
Pääsylistan lisääminen tuo tiedostoon lisää ''ryhmä''-luokkaan kuuluvia käyttäjiä ja ryhmiä. (Muista, että listaan lisätty yksittäinen käyttäjä kuuluu ''ryhmä''-luokkaan; tiedostolla on vain yksi omistaja.) "Tarkimmin täsmäävän" -säännön takia algoritmin kohdassa 4 pääsy evätään heti, jos käyttäjä löytyy ''ryhmä''-luokasta, mutta hänellä ei ole tämän luokan suojausten mukaan pääsyä tiedostoon. Vain siinä tapauksessa, että käyttäjä ei löydy ''ryhmä''-luokasta, sovelletaan ''muut''-luokan suojausta.
 
Pääsylistan mask-alkio ansaitsee maininnan tässä yhteydessä. Linux noudattaa POSIX.1-standardia, joka sanoo, että tiedoston ryhmäsuojausbitit (siis ne jotka ovat näkyvillä <tt>ls -l</tt> komennon tulosteessa) määräävät mikä suojaus tiedostolla on kun siihen sovelletaan ''ryhmä''-luokan suojausmoodia. Pääsylistoilla on kuitenkin mahdollista antaa muille ryhmille kuin tiedoston omistajaryhmälle vapaampi suojaus kuin mitä ryhmäsuojauksella on. Esimerkiksi, jos tiedoston moodi on:


  -rw-r--r--+ 1 jem users 0 Sep 14 19:28 juttu.txt
  -rw-r--r--+ 1 jem users 0 Sep 14 19:28 juttu.txt


sillä voi kuitenkin olla pääsylista, jonka mukaan <tt>staff</tt>-ryhmällä on kirjoitusoikeus tiedostoon. Tämä ei ole yhteensopivaa POSIX.1-standardin mukaan. POSIX.1 ei salli, että tiedostoihin on maagisesti oikeuksia joillekin käyttäjille, mekanismilla jota se ei tunne. Tämän ongelman ratkaisemiseksi pääsylistoihin kuuluu myös <tt>mask</tt>-kenttä, joka viime kädessä ratkaisee, onko tiedostoon pääsyä vai ei.
sillä voi kuitenkin olla pääsylista, jonka mukaan <tt>staff</tt>-ryhmällä on kirjoitusoikeus tiedostoon. Tämä ei ole yhteensopivaa POSIX.1-standardin mukaan. POSIX.1 ei salli, että tiedostoihin on maagisesti oikeuksia joillekin käyttäjille, mekanismilla jota se ei tunne. Tämän ongelman ratkaisemiseksi pääsylistoihin kuuluu myös <tt>mask</tt>-kenttä, joka viime kädessä ratkaisee, onko tiedostoon pääsyä vai ei.
Algoritmista voidaan huomata, että se toimii samalla tavalla kuin Unixin perinteinen suojausmalli, jos tiedostoon ei liity pääsylistaa. Tällöin algoritmin kohdat 2 ja 4 eivät vaikuta lopputulokseen, vaan tarkastelussa siirrytään seuraavaan kohtaan.


==Oletuspääsylistat==
==Oletuspääsylistat==
92

muokkausta

Navigointivalikko