Tässä oppaassa kerrotaan tarkemmin pääsynvalvontaluetteloista Linuxissa, mihin niitä käytetään ja miten niitä hallitaan.
Järjestelmän ylläpitäjänä käytät luultavasti paljon aikaa määrittääksesi käyttöoikeuksia käyttäjille ja ryhmille järjestelmässäsi.
Tiedostojen käyttöoikeudet ovat jo nyt varsin käteviä, kun halutaan antaa luku-, kirjoitus- tai suoritusoikeuksia hakemistoille tai tiedostoille.
Mutta entä jos tarvitsemme tarkemman tavan antaa käyttöoikeuksia kansioille tai tiedostoille?
Mitä jos haluan antaa tiedoston käyttöoikeuden tietylle käyttäjälle tai ryhmälle, joka ei ole tiedoston nykyinen omistaja?
Juuri tätä pääsynvalvontalistat, lyhennettynä myös ACL, ratkaisevat Linux-järjestelmässä.
Tämän päivän opetusohjelmassa tarkastelemme hyvin tarkkaan pääsynvalvontalistoja, mitä ne ovat ja miten niitä käytetään Linux-järjestelmän oikeanlaiseen konfigurointiin.
Valmiina?
Sisällysluettelo
- Mitä opit
- Käytönvalvontalistojen perusteet Linuxissa
- Käytönvalvontalistojen määritelmä
- Listaus pääsynvalvontalistasta
- Lisenssinvalvontaluetteloiden luominen Linuxissa
- A ACL-pakettien asennuksen tarkistaminen
- Käytönvalvontaluetteloiden asettaminen setfacl:n avulla
- Käsky getfacl
- Työskentely pääsynvalvontaluetteloiden maskin kanssa
- Kansioiden pääsynvalvontaluetteloiden oletusarvojen luominen hakemistoihin
- Hakemistojen oletusarvoisten pääsynvalvontaluetteloiden poistaminen
- Johtopäätös
Mitä opit
Jos seuraat tätä opetusohjelmaa loppuun asti, opit seuraavista aiheista:
- Mitä pääsynvalvontaluettelot ovat ja miten niitä voidaan lukea ls-komennolla;
- Miten asetetaan tiedoston perusoikeudet setfacl-komennolla:
- Miten luetaan pääsynvalvontalistoja komennolla getfacl;
- Mikä on pääsynvalvontalistan maski ja miten se luetaan;
- Mitä pääsynvalvontalistan oletusarvot ovat ja miten niitä voidaan käyttää tehokkaasti
Tämä on aika pitkä ohjelma, joten aloitetaanpa ilman muuta nopealla määritelmällä, mitä pääsynvalvontalistat ovat.
Käytönvalvontalistojen perusteet Linuxissa
Linuxissa on kaksi tapaa asettaa käyttöoikeuksia käyttäjille ja ryhmille : tavallisilla tiedostojen käyttöoikeuksilla tai käytönvalvontalistoilla.
Käytönvalvontalistojen määritelmä
Käytönvalvontalistoja käytetään Linuxin tiedostojärjestelmissä asetettaessa mukautettuja ja yksilöllisempiä käyttöoikeuksia tiedostoille ja kansioille. ACL:ien avulla tiedostojen omistajat tai etuoikeutetut käyttäjät voivat myöntää oikeuksia tietyille käyttäjille tai tietyille ryhmille.
Linuxissa, kuten varmaan tiedätkin, käyttöoikeudet on jaettu kolmeen luokkaan : yksi tiedoston omistajalle, yksi ryhmälle ja yksi muille.
Jossain tapauksissa saatat kuitenkin haluta antaa hakemiston käyttöoikeuden (esimerkiksi execute-oikeudet) tietylle käyttäjälle ilman, että sinun tarvitsee laittaa tätä käyttäjää tiedoston ryhmään.
Juuri siksi pääsynvalvontalistat on alun perin keksitty.
Listaus pääsynvalvontalistasta
Linuxissa pääsynvalvontalistoja ei oteta käyttöön, kun luodaan uusi tiedosto tai hakemisto isäntätietokoneeseen (paitsi jos emohakemistossa on joitain pääsynvalvontalistoja määritetty valmiiksi).
Voidaksesi nähdä, onko tiedostolle tai hakemistolle määritelty pääsynvalvontaluettelot, suorita komento ls ja etsi ”+”-merkki käyttöoikeusrivin lopusta.
$ ls -l
Eroa havainnollistetaan seuraavalla esimerkillä, kun luetellaan tiedostoja minimaalisessa instanssissa.
Nyt kun sinulla on joitain perusasioita pääsynvalvontaluetteloista, katsotaan, miten voit aloittaa perus-ACL:ien luomisen tiedostoille ja hakemistoille.
Lisenssinvalvontaluetteloiden luominen Linuxissa
Ennen kuin aloitat ACL-komennot, on tärkeää, että paketit on asennettu isäntäasemalle.
A ACL-pakettien asennuksen tarkistaminen
Ei välttämättä ole, jos olet valinnut minimaalisen palvelimen ajettavaksi.
Aloita tarkistamalla setfacl-komentoon liittyvä ohje suorittamalla seuraava komento
$ setfacl --help
Jos isäntäkoneesi ei löydä setfacl-komentoa, varmista, että olet asentanut ACL:ien hallintaan tarvittavat paketit.
$ sudo apt-get install acl -y
Huomaa, että tarvitset sudo-oikeudet Debian 10:ssä tämän komennon suorittamiseen.
Ajoita setfacl-komento ja varmista, että näet tällä kertaa apukomennot.
Nyt kun isäntäkoneesi on konfiguroitu oikealla tavalla, katsotaanpa, miten setfacl-komento toimii.
Käytönvalvontaluetteloiden asettaminen setfacl:n avulla
Käytönvalvontaluetteloissa on kaksi pääkomentoa, jotka sinun on muistettava : setfacl ja getfacl.
Tässä luvussa katsomme setfacl-komentoa, koska getfacl-komento on melko itsestään selvä.
Setfacl-komentoa käytetään Linuxissa tiedoston tai hakemiston pääsynvalvontaluetteloiden luomiseen, muuttamiseen ja poistamiseen.
Setfacl-komennolla on seuraava syntaksi
$ setfacl {-m, -x} {u, g}:<name>: <file, directory>
Jossa hakasulkeet tarkoittavat yhtä seuraavista vaihtoehdoista ja tavalliset hakasulkeet yhtä tai useampaa kohdetta.
- -m : tarkoittaa, että haluat muuttaa yhtä tai useampaa tiedoston tai hakemiston ACL-merkintää.
- -x : tarkoittaa, että haluat poistaa yhden tai useamman tiedoston tai hakemiston ACL-merkinnän.
- {u, g} : jos haluat muuttaa käyttäjän tai ryhmän ACL:ää.
- name : tämä on valinnainen parametri, se voidaan jättää pois, jos haluat asettaa ACL-merkinnät jokaiselle käyttäjälle tai jokaiselle ryhmälle isännälläsi.
- : jos haluat asettaa tiedoston tai hakemiston luku-, kirjoitus- tai suoritusoikeudet.
Jos haluat esimerkiksi asettaa tietylle käyttäjälle tietyt kirjoitusoikeudet tiedostoon, kirjoitat seuraavan komennon
$ setfacl -m u:user:w <file, directory>
Jos haluat asettaa suoritusoikeudet kaikille isäntäsi käyttäjille, kirjoittaisit seuraavan komennon
$ setfacl -m u::x <file, directory>
Voidaksesi asettaa täydet käyttöoikeudet tietylle ryhmälle isännälläsi, kirjoittaisit setfacl-komennon näin
$ setfacl -m g:group:rwx <file, directory>
Asetaan nyt, että haluat poistaa ACL-merkinnän tiedostosta.
Poistaaksesi käyttäjäkohtaisen merkinnän tiedostosta, määrittäisit x-vaihtoehdon.
Huomaa : et voi määrittää tiettyjä oikeuksia yhdestä ACL-merkinnästä, eli et voi poistaa kirjoitusoikeuksia, pitäen ACL:n lukuoikeudet aktiivisina.
$ setfacl -x u:<user> <file, directory>
Toisella tavalla, jos haluat poistaa ryhmiin liittyvät ACL:t isäntäkoneellasi, kirjoittaisit seuraavan komennon
$ setfacl -x g:<group> <file, directory>
Nyt kun olet nähnyt, miten voit luoda pääsynvalvontaluetteloita helposti Linuxissa, on aika katsoa, miten voit tarkistaa olemassa olevat pääsynvalvontaluettelot tiedostoissa ja hakemistoissa.
Käsky getfacl
Komentoa getfacl käytetään Linuxissa tulostamaan täydellinen luettelo tiedoston tai hakemiston kaikista tavallisista oikeuksista ja pääsynvalvontalistojen oikeuksista.
Getfacl-komentoa voidaan käyttää seuraavalla syntaksilla
$ getfacl <file, directory>
Getfacl-komento on jaettu useisiin luokkiin :
- Tiedostonimi, omistaja ja ryhmä : tiedot käyttäjän ja ryhmän omistajuudesta näytetään ylhäällä;
- Käyttäjän oikeudet : ensin löytyvät tavalliset käyttäjän oikeudet, joita kutsutaan myös omistavaksi käyttäjäksi, ja sen jälkeen mahdolliset käyttäjäkohtaiset ACL-merkinnät (joita kutsutaan nimetyiksi käyttäjiksi)
- Ryhmän oikeudet : omistavat ryhmät esitetään ja sen jälkeen ryhmäkohtaiset ACL-merkinnät, joita kutsutaan myös nimetyiksi ryhmiksi
- Mask : joka rajoittaa ACL-merkinnöille annettuja oikeuksia, maskista kerrotaan tarkemmin seuraavassa osiossa;
- Muut oikeudet : nämä oikeudet ovat aina aktiivisia ja tämä on viimeinen luokka, jota tutkitaan silloin, kun mikään muu oikeus ei sovi nykyiselle käyttäjälle tai ryhmälle.
Työskentely pääsynvalvontaluetteloiden maskin kanssa
Kuten varmaan huomasit edellisestä kuvakaappauksesta, nimettyjen ryhmien ja muiden oikeuksien välissä on maskimerkintä.
Mutta mihin tätä maskia käytetään?
ACL-maski eroaa tiedostonluontimaskista (umask), ja sitä käytetään rajoittamaan tiedostossa tai hakemistossa jo olemassa olevia ACL-merkintöjä.
ACL-maskia käytetään ACL-oikeuksien enimmäisjoukkona riippumatta olemassa olevista oikeuksista, jotka ylittävät ACL-maskin.
Kuten aina, kaavio kertoo enemmän kuin sata sanaa.
ACL-maski päivittyy joka kerta, kun suoritat setfacl-komennon, ellet määritä -n-lippulauseella, ettet halua päivittää maskia.
Jos haluat estää maskin päivittämisen, suorita setfacl seuraavalla komennolla
$ setfacl -n -m u:antoine:rwx <file, directory>
Kuten tässä esimerkissä näkyy, olen asettanut käyttäjälle ”antoine” täydet oikeudet tiedostoon.
Maski on asetettu rajoittamaan oikeudet luku- ja kirjoitusoikeuksiin.
Sen seurauksena tälle käyttäjälle asetetut ”todelliset oikeudet” tähän tiedostoon ovat luku- ja kirjoitusoikeudet, suoritusoikeutta ei myönnetä.
Huomautus : jos enimmäisoikeusjoukko poikkeaa maskimerkinnästä, näytetään tehokas rivi, joka laskee käytettyjen ACL-merkintöjen ”todellisen” joukon.
Kansioiden pääsynvalvontaluetteloiden oletusarvojen luominen hakemistoihin
Kuten tässä artikkelissa jo mainittiin, on mahdollista luoda ACL-merkintöjä hakemistoihin ja ne toimivat samalla tavalla kuin tiedostojen pääsynvalvontaluettelot.
Hakemistoissa on kuitenkin pieni ero : sinulla on mahdollisuus luoda pääsynvalvontaluetteloiden oletusarvot.
Käyttäytymisenvalvontaluetteloiden oletusarvoja käytetään luomaan hakemistoon ACL-merkintöjä, jotka periytyvät kyseisessä hakemistossa oleville objekteille, kuten tiedostoille tai alihakemistoille.
Luoessasi oletusarvoisia ACL-merkintöjä :
- Tässä hakemistossa luodut tiedostot perivät emohakemistossa määritetyt ACL-merkinnät
- Tässä hakemistossa luodut alihakemistot perivät ACL-merkinnät sekä oletusarvoiset ACL-merkinnät emohakemistosta.
Luoaksesi oletusarvoisia ACL-merkintöjä, määritä -d-vaihtoehto asettaessasi ACL-luetteloa komennolla setfacl.
$ setfacl -d -m {u, g}:<name>: <directory>
Jos haluat esimerkiksi antaa lukuoikeudet kaikille hakemistoon luoduille tiedostoille, suoritat seuraavan komennon
$ setfacl -d -m u::r directory
Nyt kun tiedosto luodaan tähän acl-hakemistoon, näet, että tiedostoon sovelletaan oletusarvoisia ACL-merkintöjä.
Kun acl-hakemistoon luodaan hakemisto, se perii oletusarvoiset ACL-merkinnät, jotka on määritetty emohakemistossa.
Huomaa, että oletusarvoiset käyttöoikeudet suositellaan määritettäväksi kaikille kolmelle luokalle (käyttäjä, ryhmä ja muut).
Tosiasiassa yhden määrittäminen kolmesta merkinnästä luo loput kaksi tiedostojen luontimaskiin liittyvillä oikeuksilla.
Hakemistojen oletusarvoisten pääsynvalvontaluetteloiden poistaminen
Poistaaksesi oletusarvoiset olemassa olevat pääsynvalvontaluettelot hakemistoista, käytä -k-lippua komennon setfacl kanssa.
$ setfacl -k <directory>
Aiemmin määrittämässämme esimerkissä oletusarvoisten merkintöjen poistaminen tapahtuu seuraavasti
$ setfacl -k acl-directory
Huomaa, että ACL-merkintöjen poistaminen ylimmästä hakemistosta ei poista ACL-merkintöjä ylimmässä hakemistossa olevissa tiedostoissa tai hakemistoissa.
Poistaaksesi oletusarvoiset ACL-merkinnät hakemistosta ja kaikista alihakemistoista, sinun on käytettävä rekursiivista optiota (-R)
$ setfacl -kR <directory>
Johtopäätös
Tässä oppitunnissa opit pääsynvalvontaluetteloista Linuxissa, komennoista getfacl ja setfacl.
Oppasit lisää pääsynvalvontalistojen maskista ja siitä, miten oletus ACL:ää käytetään luomaan ACL-merkintöjä emohakemiston sisältämiin tiedostoihin ja alihakemistoihin.
Jos olet utelias Linux-järjestelmänhallinnasta, meillä on paljon muitakin opetusohjelmia aiheesta, lue ne ehdottomasti!