Muokataan sivua Tiedostojärjestelmän pääsylistat (ACL)

Siirry navigaatioon Siirry hakuun
Varoitus: Et ole kirjautunut sisään. IP-osoitteesi näkyy julkisesti kaikille, jos muokkaat. Jos kirjaudut sisään tai luot tunnuksen, muokkauksesi yhdistetään käyttäjänimeesi ja saat paremman käyttökokemuksen.

Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.

Nykyinen versio Oma tekstisi
Rivi 1: Rivi 1:
Linux tukee joillakin tiedostojärjestelmillä niin sanottuja '''pääsylistoja''', englanniksi access control list (ACL). Pääsylistoilla voidaan Linuxin [[Tiedoston oikeudet|perinteisiä tiedoston oikeuksia]] joustavammin hallita kenellä on pääsy eri tavalla käsitellä tiedostoja ja hakemistoja. Tavallisella Linuxin pääsyoikeusmekanismilla ei esimerkiksi ole mahdollista antaa kahdelle tai useammalle ryhmälle räätälöityjä oikeuksia tiedostoon.
'''DRAFT! TÄMÄ EI OLE VIELÄ VALMIS.'''
 
Linux tukee joillakin tiedostojärjestelmillä niin sanottuja pääsylistoja, englanniksi access control list (ACL). Pääsylistoilla voidaan Linuxin [[Tiedoston oikeudet|perinteisiä tiedoston oikeuksia]] joustavammin hallita kenellä on pääsy eri tavalla käsitellä tiedostoja ja hakemistoja. Tavallisella Linuxin pääsyoikeusmekanismilla ei esimerkiksi ole mahdollista antaa kahdelle tai useammalle ryhmälle räätälöityjä oikeuksia tiedostoon.


==Taustaa==
==Taustaa==


Unixissa ja sitä myötä Linuxissa ei perinteisesti ole ollut tukea pääsylistoille, vaikka joissakin muissa käyttöjärjestelmissä ne ovat olleet käytössä jo 1960-luvulla. Unixin ACL:n standardointia varten perustettiin [[POSIX]]-työryhmä, joka ei kuitenkaan saanut työtänsä päätökseen. Työryhmän työn tuloksena jäi kuitenkin "POSIX 1003.1e Draft 17", joka oli viimeinen työversio jonka ryhmä sai aikaiseksi ennen rahoituksen loppumista. Tämän työversion pohjalta toteutettiin ACL:t Linuxin kernel-versioon 2.5.46 vuonna 2002.
Unixissa ja sitä myötä Linuxissa ei perinteisesti ole ollut tukea pääsylistoille, vaikka joissakin muissa käyttöjärjestelmissä ne ovat olleet käytössä jo 1960-luvulla. Unixin ACL:n standardointia varten perustettiin POSIX-työryhmä, joka ei kuitenkaan saanut työtänsä päätökseen. Työryhmän työn tuloksena jäi kuitenkin "POSIX 1003.1e Draft 17", joka oli viimeinen työversio jonka ryhmä sai aikaiseksi ennen rahoituksen loppumista. Tämän työversion pohjalta toteutettiin ACL:t Linuxin kernel-versioon 2.5.46 vuonna 2002.


"POSIX draft"-ACL:ien lisäksi on [[NFS]]v4-verkkotiedostojärjestelmää varten olemassa oma ACL-spesifikaatio ja toteutus. Tällä sivulla keskitytään kuitenkin "POSIX draft ACL"-pääsylistoihin.
"POSIX draft"-ACL:ien lisäksi on NFSv4-verkkotiedostojärjestelmää varten olemassa oma ACL-spesifikaatio ja toteutus. Tällä sivulla keskitytään kuitenkin "POSIX draft ACL"-pääsylistoihin.


==Järjestelmävaatimukset==
==Järjestelmävaatimukset==
Rivi 67: Rivi 69:
==Pääsylistojen muokkaus==
==Pääsylistojen muokkaus==


<tt>ls -l</tt> -komento antaa vinkin tiedostoon liitetyistä pääsylistoista tulostamalla <tt>+</tt>-merkin suojauskentän perään. Ls-ohjelma ei kuitenkaan kerro tämän enempää pääsylistoista.
<tt>ls -l</tt> -komento antaa vinkin tiedostoon liitetyistä pääsylistoista tulostamalla <tt>+</tt>-merkin suojauskentän perään. Ls-ohjelmalla ei kuitenkaan kerro tämän enempää pääsylistoista.


Pääsylistojen käsittelyä varten on olemassa ohjelmat <tt>getfacl</tt> ja <tt>setfacl</tt>. Ellei näitä ohjelmia ole asennettu jo valmiiksi, ne pitää ladata ja asentaa erikseen. Miten tämä tapahtuu on jakeluriippuvaista – ne löytyvät tyypillisesti paketista nimeltään 'acl', tms.
Pääsylistojen käsittelyä varten on olemassa ohjelmat <tt>getfacl</tt> ja <tt>setfacl</tt>. Ellei näitä ohjelmia ole asennettu jo valmiiksi, ne pitää ladata ja asentaa erikseen. Miten tämä tapahtuu on jakeluriippuvaista – ne löytyvät tyypillisesti paketista nimeltään 'acl', tms.


Ohjelmalla <tt>getfacl</tt> ("Get File ACL") voi tutkia tiedostoon liittyvää pääsylistaa, ohjelmalla <tt>setfacl</tt> ("Set File ACL") voi pääsylistaa muokata tai kokonaan poistaa.
Ohjelmalla <tt>getfacl</tt> voi tutkia tiedostoon liittyviä pääsylistoja, ohjelmalla <tt>setfacl</tt> vastaavasti asettaa tai kokonaan poistaa.
 
Esimerkki getfacl-komennon tulosteesta:
 
> getfacl juttu.txt
# file: juttu.txt
# owner: hemmo
# group: users
user::rw-
group::r--
group:devel:rw-            #effective:r--
mask::r-x
other::r--
 
Saman tiedoston listaus <tt>ls -l</tt> -komennolla:


> ls -l juttu.txt
'''<Tähän tulee lisää tekstiä>'''
-rw-r-xr--+ 1 hemmo users 0 Sep 16 08:49 juttu.txt
 
Getfacl-komennon tulosteesta nähdään, että
* tiedoston omistaa käyttäjä hemmo ja sen ryhmäomistaja on users
* hemmolla on luku- ja kirjoitusoikeus tiedostoon
* users-ryhmän jäsenillä on lukuoikeus tiedostoon
* devel-ryhmän jäsenille on erikseen annettu luku- ja kirjoitusoikeus tiedostoon, mutta...
** koska mask:n arvo on r-x, devel-ryhmällä ei kuitenkaan ole kirjoitusoikeutta
* jos tiedostoa käsittelee joku muu kuin hemmo tai edellä mainittujen ryhmien jäsen, sovelletaan other-kohdan lukuoikeutta
 
Pääsylistojen muuttamiseen käytetään <tt>setfacl</tt>-ohjelmaa. Pääsylistaa muutetaan komennon <tt>-m</tt>-optiolla. Esimerkki:
> setfacl -m u:lyyli:rw-,g:test:rw- juttu.txt
> getfacl juttu.txt
# file: juttu.txt
# owner: hemmo
# group: users
user::rw-
user:lyyli:rw-            #effective:r--
group::r--
group:devel:rw-            #effective:r--
group:test:rw-            #effective:r--
mask::r-x
other::r--
 
Uudet pääsylistan alkiot kerrotaan <tt>-m</tt> option perään pilkuilla erotettuina (ei välilyöntiä pilkun jälkeen). Esimerkissä myönnettiin käyttäjälle lyyli sekä ryhmälle test luku- ja kirjoitusoikeus tiedostoon. Koska mask on edelleen r-w, tosiasiassa heillä ei edelleenkään ole kirjoitusoikeutta tiedostoon. Tämä voidaan korjata <tt>chmod</tt>-komennolla:
> chmod g+w juttu.txt
> getfacl juttu.txt
# file: juttu.txt
# owner: hemmo
# group: users
user::rw-
user:lyyli:rw-
group::r--
group:devel:rw-
group:test:rw-
mask::rwx
other::r--
 
Pääsylistan alkioita voi poistaa <tt>setfacl</tt>-ohjelman <tt>-x</tt>-optiolla, pääsylistan voi korvata kokonaan toisella <tt>--set</tt> -optiolla, ja poistaa kokonaan <tt>-b</tt>-optiolla. Tiedoston pääsylistan voi kopioida tiedostosta toiseen näin:
getfacl tiedosto1 | setfacl --set-file=- tiedosto2
 
Lisätietoja <tt>getfacl</tt>- ja <tt>setfacl</tt>-komentojen man-sivuilla.


==Ongelmia==
==Ongelmia==
Rivi 135: Rivi 81:
* Monet varmuuskopiointiin käytetyt ohjelmat, kuten <tt>tar</tt>, eivät ymmärrä pääsylistoja. Tämä johtaa siihen, että tiedostot menettävät pääsylistansa, jos ne joudutaan palauttamaan <tt>tar</tt>-arkistosta.
* Monet varmuuskopiointiin käytetyt ohjelmat, kuten <tt>tar</tt>, eivät ymmärrä pääsylistoja. Tämä johtaa siihen, että tiedostot menettävät pääsylistansa, jos ne joudutaan palauttamaan <tt>tar</tt>-arkistosta.


* Jotkut editorit toimivat siten, että tallennus ei kirjoita tiedostoa uudestaan, vaan kirjoittaa muokatun tekstin uuteen tiedostoon, joka nimetään vanhan tiedoston mukaan. Käyttäjä ei huomaa tiedoston vaihtumista, sillä nimi on sama. Koska tiedosto kuitenkin on järjestelmän kannalta uusi, jos editori ei ota asiaa huomioon, tiedostossa saattaa olla väärä pääsylista. Uusi tiedosto saattaa saada pääsylistansa hakemiston oletuspääsylista, tai ei mitään pääsylistaa. Mm. Emacs-editori toimii oletusarvoisesti näin.
* Jotkut editorit toimivat siten, että tallennuksen eivät kirjoita tiedostoa uudestaan, vaan kirjoittavat muokatun tekstin uuteen tiedostoon, jonka nimeävät vanhan tiedoston mukaan. Koska tiedosto kuitenkin on järjestelmän kannalta uusi, jos editori ei ota asiaa huomioon, tiedostossa saattaa olla väärä pääsylista. Uusi tiedosto saattaa saada hakemiston oletuspääsylista, tai ei mitään pääsylistaa.
 
* Tiedosto perii oletuspääsylistan vain hakemistosta, jossa se luodaan. Tiedosto säilyttää pääsylistansa, jos se siirretään (<tt>mv</tt>-käskyllä) tai kopioidaan (<tt>cp</tt>-käskyllä) toiseen hakemistoon, vaikka kohdehakemistolla on oletuspääsylista. Jos tiedosto luodaan hakemistossa, jossa ei ole oletuspääsylistaa, tai tiedostojärjestelmä ei edes tue pääsylistoja, tiedostoon ei tule mitään pääsylistaa.
 
==Aiheesta muualla==
* [http://www.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux] {{Vanhentunut linkki}}
* [http://www.vanemery.com/Linux/ACL/linux-acl.html Using ACLs with Fedora Core 2  (Linux Kernel 2.6.5)]


[[Luokka:Järjestelmä]]
* Tiedosto perii oletuspääsylistan vain hakemistosta, jossa se luodaan. Jos tiedosto luodaan toisessa hakemistossa, jossa ei ole oletuspääsylistaa, tai tiedostojärjestelmä ei edes tue pääsylistoja, tiedostoon ei tule mitään pääsylistaa. Jos tällaisen tiedoston siirtää <tt>mv</tt>-käskyllä hakemistoon, jossa on oletuspääsylista, sitä ei sovelleta tiedostoon, sillä <tt>mv</tt>-käsky ei luo tiedostoa, ainoastaan siirtää sen.
[[Luokka:Ohjeet]]
[[Luokka:Tiedostojärjestelmät]]
[[Luokka:Käyttäjät ja ryhmät]]
Wikin materiaali on kaikkien vapaasti käytettävissä Creative Commons 3.0 - nimi mainittava -lisenssin alaisuudessa. TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!

Muokataksesi tätä sivua vastaa alla olevaan kysymykseen (lisätietoja):

Peruuta Muokkausohjeet (avautuu uuteen ikkunaan)

Tällä sivulla käytetyt mallineet: