Käyttöoikeusluetteloiden (ACL) ja levykiintiöiden asettaminen käyttäjille ja ryhmille


Käyttöoikeusluettelot (tunnetaan myös nimellä ACL-luettelot) ovat Linux-ytimen ominaisuus, jonka avulla tiedostoille ja hakemistoille voidaan määrittää tarkempia käyttöoikeuksia kuin tavalliset ugo/rwx-oikeudet.

Esimerkiksi tavalliset ugo/rwx-käyttöoikeudet eivät salli erilaisten käyttöoikeuksien määrittämistä yksittäisille käyttäjille tai ryhmille. ACL-luetteloilla tämä on suhteellisen helppo tehdä, kuten näemme tässä artikkelissa.

Tiedostojärjestelmän yhteensopivuuden tarkistaminen ACL-luetteloiden kanssa

Varmistaaksesi, että tiedostojärjestelmäsi tukevat tällä hetkellä ACL-luetteloita, tarkista, että ne on liitetty acl-vaihtoehdolla. Käytämme tätä varten tune2fs-tiedostoa ext2/3/4-tiedostojärjestelmille alla kuvatulla tavalla. Korvaa /dev/sda1 laitteella tai tiedostojärjestelmällä, jonka haluat tarkistaa:

tune2fs -l /dev/sda1 | grep "Default mount options:"

Huomaa: XFS tukee käyttöoikeusluetteloita heti.

Seuraavassa ext4-tiedostojärjestelmässä voimme nähdä, että ACL-luettelot on otettu käyttöön tiedostolle /dev/xvda2:

tune2fs -l /dev/xvda2 | grep "Default mount options:"

Jos yllä oleva komento ei osoita, että tiedostojärjestelmään on asennettu ACL-tuki, se johtuu todennäköisesti noacl-vaihtoehdosta, joka on tiedostossa /etc/fstab.

Poista siinä tapauksessa se, irrota tiedostojärjestelmä ja liitä se sitten uudelleen tai yksinkertaisesti käynnistä järjestelmä uudelleen, kun olet tallentanut muutokset tiedostoon /etc/fstab.

Esittelyssä ACL:t Linuxissa

ACL-luetteloiden toiminnan havainnollistamiseksi käytämme ryhmää nimeltä developers ja lisäämme käyttäjiä walterwhite ja saulgoodman (kyllä, olen Breaking Bad -fani! ) siihen.:

groupadd developers
useradd walterwhite
useradd saulgoodman
usermod -a -G developers walterwhite
usermod -a -G developers saulgoodman

Ennen kuin jatkamme, tarkistetaan, että molemmat käyttäjät on lisätty kehittäjäryhmään:

id walterwhite
id saulgoodman

Luodaan nyt hakemistoon /mnt hakemisto nimeltä test ja sen sisään tiedosto nimeltä acl.txt (/mnt/test/acl .txt).

Tämän jälkeen asetamme ryhmän omistajaksi kehittäjät ja muutamme sen oletusarvoiset ugo/rwx-oikeudet rekursiivisesti arvoon 770 (mikä antaa luku-, kirjoitus- ja suoritusoikeudet sekä tiedoston omistajalle että ryhmän omistajalle myönnetyt luvat):

mkdir /mnt/test
touch /mnt/test/acl.txt
chgrp -R developers /mnt/test
chmod -R 770 /mnt/test

Kuten odotettua, voit kirjoittaa osoitteeseen /mnt/test/acl.txt muodossa walterwhite tai saulgoodman:

su - walterwhite
echo "My name is Walter White" > /mnt/test/acl.txt
exit
su - saulgoodman
echo "My name is Saul Goodman" >> /mnt/test/acl.txt
exit

Toistaiseksi hyvin. Näemme kuitenkin pian ongelman, kun meidän on myönnettävä kirjoitusoikeudet tiedostoon /mnt/test/acl.txt toiselle käyttäjälle, joka ei ole kehittäjäryhmässä.

Normaalit ugo/rwx-oikeudet edellyttäisivät, että uusi käyttäjä lisätään kehittäjäryhmään, mutta se antaisi hänelle samat oikeudet kaikkiin ryhmän omistamiin objekteihin. Juuri siellä ACL:t ovat hyödyllisiä.

ACL:ien asettaminen Linuxissa

ACL-luetteloita on kahta tyyppiä: käyttöoikeusluettelot ovat (joita käytetään tiedostoon tai hakemistoon) ja oletus (valinnainen) ACL-luettelot, joita voidaan käyttää vain hakemistossa. .

Jos tiedostoilla, jotka sijaitsevat hakemistossa, johon on asetettu oletus-ACL, ei ole omaa ACL-luetteloa, ne perivät päähakemistonsa oletus-ACL:n.

Annetaan käyttäjälle gacanepa luku- ja kirjoitusoikeus tiedostoon /mnt/test/acl.txt. Ennen kuin teet sen, katsotaanpa nykyiset ACL-asetukset kyseisessä hakemistossa:

getfacl /mnt/test/acl.txt

Muuta sitten tiedoston ACL-luetteloita, käytä u:-komentoa, jonka jälkeen käyttäjätunnus ja :rw osoittavat luku-/kirjoitusoikeudet:

setfacl -m u:gacanepa:rw /mnt/test/acl.txt

Suorita tiedostossa getfacl uudelleen vertaillaksesi. Seuraavassa kuvassa näkyy "Ennen" ja "Jälkeen":

getfacl /mnt/test/acl.txt

Seuraavaksi meidän on annettava muille suoritusoikeudet /mnt/test-hakemistossa:


chmod +x /mnt/test

Muista, että tavallinen käyttäjä tarvitsee hakemiston suoritusoikeudet päästäkseen käsiksi hakemiston sisältöön.

Käyttäjän gacanepa pitäisi nyt pystyä kirjoittamaan tiedostoon. Vaihda kyseiseen käyttäjätiliin ja suorita seuraava komento vahvistaaksesi:

echo "My name is Gabriel Cánepa" >> /mnt/test/acl.txt

Jos haluat määrittää oletusarvoisen ACL:n hakemistolle (jonka sen sisältö perii, ellei toisin kirjoiteta), lisää d: ennen sääntöä ja määritä hakemisto tiedostonimen sijaan:

setfacl -m d:o:r /mnt/test
getfacl /mnt/test/

Yllä oleva ACL antaa käyttäjille, jotka eivät kuulu omistajaryhmään, lukuoikeudet /mnt/test-hakemiston tulevaan sisältöön. Huomaa ero getfacl /mnt/test:n lähdössä ennen muutosta ja sen jälkeen:

Jos haluat poistaa tietyn ACL:n, korvaa -m yllä olevissa komennoissa -x:lla. Esimerkiksi,

setfacl -x d:o /mnt/test

Vaihtoehtoisesti voit myös käyttää vaihtoehtoa -b poistaaksesi KAIKKI ACL:t yhdessä vaiheessa:

setfacl -b /mnt/test

Lisätietoja ja esimerkkejä ACL-luetteloiden käytöstä on openSUSE-tietoturvaoppaan luvussa 10 2 osiossa (saatavilla myös maksutta PDF-muodossa. ).

Aseta Linuxin levykiintiöt käyttäjille ja tiedostojärjestelmille

Varastointitila on toinen resurssi, jota on käytettävä ja valvottava huolellisesti. Tätä varten kiintiöt voidaan asettaa tiedostojärjestelmäkohtaisesti joko yksittäisille käyttäjille tai ryhmille.

Siten tietyn käyttäjän tai tietyn ryhmän sallitulle levynkäytölle asetetaan rajoitus, ja voit olla varma, että huolimaton (tai tahaton) käyttäjä ei täytä levyjäsi täyteen.

Ensimmäinen asia, joka sinun on tehtävä, jotta voit ottaa kiintiöt käyttöön tiedostojärjestelmässä, on liittää se usrquota- tai grpquota (vastaavasti käyttäjä- ja ryhmäkiintiöille) -asetuksilla tiedostoon /etc/fstab.

Otetaan esimerkiksi käyttöön käyttäjäkohtaiset kiintiöt /dev/vg00/vol_backups- ja ryhmäpohjaiset kiintiöt /dev/vg00/vol_projects-kohteisiin.

Huomaa, että UUID-tunnusta käytetään kunkin tiedostojärjestelmän tunnistamiseen.

UUID=f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home/projects ext4 defaults,grpquota 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults,usrquota 0 0

Irrota ja asenna molemmat tiedostojärjestelmät uudelleen:

umount /home/projects
umount /home/backups
mount -o remount /home/projects
mount -o remount /home/backups 

Tarkista sitten, että usrquota- ja grpquota-asetukset ovat mukana mountin lähdössä (katso korostettuna alla):

mount | grep vg00

Suorita lopuksi seuraavat komennot kiintiöiden alustamiseksi ja ottamiseksi käyttöön:

quotacheck -avugc
quotaon -vu /home/backups
quotaon -vg /home/projects

Siitä huolimatta, määritetään nyt kiintiöt aiemmin mainitsemamme käyttäjänimelle ja ryhmälle. Voit myöhemmin poistaa kiintiöt käytöstä quotaoff-toiminnolla.

Linuxin levykiintiöiden asettaminen

Aloitetaan asettamalla ACL:lle /home/backups käyttäjälle gacanepa, mikä antaa hänelle luku-, kirjoitus- ja suoritusoikeudet kyseisessä hakemistossa:

setfacl -m u:gacanepa:rwx /home/backups/

Sitten kanssa,

edquota -u gacanepa

Teemme pehmeät limit=900 ja kovat limit=1000-lohkot (1024 tavua/lohko * 1000 lohkoa=1024000 tavua=1 Mt ) levytilan käytöstä.

Voimme myös asettaa rajan 20 ja 25 pehmeinä ja kovina rajoituksina tämän käyttäjän luomien tiedostojen lukumäärälle.

Yllä oleva komento käynnistää tekstieditorin ($EDITOR) tilapäisellä tiedostolla, jossa voimme asettaa aiemmin mainitut rajoitukset:

Nämä asetukset saavat varoituksen käyttäjälle gacanepa, kun hän on saavuttanut oletusarvon 900 lohkon tai 20 inodin rajan. armonaika 7 päivää.

Jos ylikiintiö-tilannetta ei ole eliminoitu siihen mennessä (esimerkiksi poistamalla tiedostoja), pehmeästä rajasta tulee kova raja ja tätä käyttäjää estetään käyttämästä lisää tallennustilaa tai luomasta lisää tiedostot.

Testaamista varten annetaan käyttäjän gacanepa yrittää luoda tyhjä 2 Mt tiedosto nimeltä test1 /home/backups -kansioon:

dd if=/dev/zero of=/home/backups/test1 bs=2M count=1
ls -lh /home/backups/test1

Kuten näet, kirjoitustoimintotiedosto epäonnistuu, koska levykiintiö on ylitetty. Koska vain ensimmäiset 1000 kt kirjoitetaan levylle, tulos on tässä tapauksessa todennäköisesti vioittunut tiedosto.

Vastaavasti voit luoda ACL:n kehittäjäryhmille, jotta voit antaa kyseisen ryhmän jäsenille rwx-käyttöoikeuden /home/projects-sivulle:

setfacl -m g:developers:rwx /home/projects/

Ja aseta kiintiörajat seuraavasti:

edquota -g developers

Aivan kuten teimme aiemmin käyttäjän gacanepa kanssa.

Armonaika voidaan määrittää minkä tahansa määrän sekunteja, minuutteja, tunteja, päiviä, viikkoja tai kuukausia suorittamalla.

edquota -t

ja päivittää arvot kohdassa Estä lisäaika ja Inoden lisäaika.

Toisin kuin esto- tai inode-käytössä (jotka asetetaan käyttäjä- tai ryhmäkohtaisesti), lisäaika asetetaan järjestelmän laajuisesti.

Voit raportoida kiintiöt käyttämällä kiintiötä -u [käyttäjä] tai kiintiö -g [ryhmä] pikaluetteloa varten tai repquota -v [/polku/to /filesystem] saadaksesi yksityiskohtaisemman (sanallisen) ja kauniisti muotoillun raportin.

Tietenkin haluat korvata [käyttäjä], [ryhmä] ja [/polku/tiedostojärjestelmään] tietyllä käyttäjällä/ryhmien nimet ja tiedostojärjestelmä, jotka haluat tarkistaa.

Yhteenveto

Tässä artikkelissa olemme selittäneet, kuinka käyttöoikeusluettelot ja levykiintiöt asetetaan käyttäjille ja ryhmille. Molempien avulla voit hallita käyttöoikeuksia ja levyn käyttöä tehokkaammin.

Jos haluat oppia lisää kiintiöistä, voit katsoa Linux Documentation Projectin Quota Mini-HowTo -ohjeet.

Sanomattakin on selvää, että voit myös luottaa siihen, että vastaamme kysymyksiin. Lähetä ne vain alla olevalla kommenttilomakkeella, niin katsomme mielellämme.