Kako nastaviti sezname nadzora dostopa (ACL) in diskovne kvote za uporabnike in skupine


Seznami za nadzor dostopa (znani tudi kot ACL) so značilnost jedra Linuxa, ki omogoča določanje natančnejših pravic dostopa do datotek in imenikov, kot jih določajo običajna dovoljenja ugo/rwx.

Na primer, standardna dovoljenja ugo/rwx ne omogočajo nastavitve različnih dovoljenj za različne posamezne uporabnike ali skupine. Kot bomo videli v tem članku, je to z ACL-ji razmeroma enostavno narediti.

Preverjanje združljivosti datotečnega sistema z ACL-ji

Če želite zagotoviti, da vaši datotečni sistemi trenutno podpirajo ACL-je, preverite, ali so bili nameščeni z možnostjo acl. Za to bomo uporabili tune2fs za datotečne sisteme ext2/3/4, kot je navedeno spodaj. Zamenjajte/dev/sda1 z napravo ali datotečnim sistemom, ki ga želite preveriti:

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

Opomba: Pri XFS so seznami za nadzor dostopa podprti takoj.

V naslednjem datotečnem sistemu ext4 lahko vidimo, da so bili ACL-ji omogočeni za/dev/xvda2:

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

Če zgornji ukaz ne pomeni, da je bil datotečni sistem nameščen s podporo za ACL-je, je to verjetno posledica možnosti noacl, ki je prisotna v/etc/fstab.

V tem primeru ga odstranite, odstranite datotečni sistem in ga nato znova namestite ali preprosto shranite sistem, potem ko shranite spremembe v/etc/fstab.

Predstavljamo ACL-je v Linuxu

Za ponazoritev delovanja ACL-jev bomo uporabili skupino z imenom razvijalci in ji dodali uporabnike walterwhite in saulgoodman (ja, jaz sem navdušenec!):

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

Preden nadaljujemo, preverimo, ali sta bila oba uporabnika dodana v skupino razvijalcev:

# id walterwhite
# id saulgoodman

Ustvarimo zdaj imenik z imenom test v/mnt in notri datoteko z imenom acl.txt (/mnt/test/acl.txt).

Nato bomo lastnika skupine nastavili za razvijalce in njegova privzeta dovoljenja ugo/rwx rekurzivno spremenili na 770 (s čimer bomo podelili dovoljenja za branje, pisanje in izvrševanje, dodeljena lastniku in lastniku skupine datoteke):

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

Kot je bilo pričakovano, lahko v /mnt/test/acl.txt pišete kot walterwhite ali 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

Zaenkrat dobro. Vendar bomo kmalu videli težavo, ko bomo morali drugemu uporabniku, ki ni v skupini razvijalcev, odobriti dostop za pisanje v /mnt/test/acl.txt.

Za običajna dovoljenja ugo/rwx bi bilo treba dodati novega uporabnika v skupino razvijalcev, vendar bi mu to omogočilo enaka dovoljenja za vse predmete v lasti skupine. Prav tam so ACL-ji prav prišli.

Nastavitev ACL-jev v Linuxu

Obstajata dve vrsti ACL-jev: dostopni ACL-ji so (ki se uporabljajo za datoteko ali imenik) in privzeti (neobvezni) ACL-ji, ki jih je mogoče uporabiti samo v imeniku.

Če datoteke v imeniku, v katerem je nastavljen privzeti ACL, nimajo lastnega ACL, podedujejo privzeti ACL nadrejenega imenika.

Uporabniku gacanepa omogočimo dostop do branja in pisanja do /mnt/test/acl.txt. Pred tem si oglejmo trenutne nastavitve ACL v tem imeniku z:

# getfacl /mnt/test/acl.txt

Nato spremenite ACL-je v datoteki, uporabite u: , nato uporabniško ime in : rw , da označite dovoljenja za branje/pisanje:

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

In znova zaženite getfacl v datoteki za primerjavo. Naslednja slika prikazuje\"Pred" in\"Po":

# getfacl /mnt/test/acl.txt

Nato bomo morali dati drugim dovoljenja za izvajanje v imeniku/mnt/test:

# chmod +x /mnt/test

Upoštevajte, da mora običajni uporabnik za dostop do vsebine imenika imeti dovoljenja za izvrševanje v tem imeniku.

Uporabnik gacanepa bi zdaj moral imeti možnost pisanja v datoteko. Preklopite na ta uporabniški račun in za potrditev izvedite naslednji ukaz:

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

Če želite v imenik nastaviti privzeti ACL (katerega vsebina bo podedovala, razen če ga ne prepišete drugače), pred pravilom dodajte d: in namesto imena datoteke podajte imenik:

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

Zgornji ACL bo uporabnikom, ki niso v skupini lastnikov, omogočil dostop do branja do prihodnje vsebine imenika/mnt/test. Upoštevajte razliko v izhodu getfacl/mnt/test pred in po spremembi:

Če želite odstraniti določen ACL, v zgornjih ukazih nadomestite -m z -x . Na primer,

# setfacl -x d:o /mnt/test

Lahko pa tudi z možnostjo -b odstranite VSE ACL v enem koraku:

# setfacl -b /mnt/test

Za več informacij in primere uporabe ACL-jev glejte poglavje 10, oddelek 2, varnostnih vodnikov openSUSE (na voljo tudi za brezplačen prenos v obliki PDF).

Nastavite kvote za disk Linux za uporabnike in datotečne sisteme

Prostor za shranjevanje je še en vir, ki ga je treba skrbno uporabljati in nadzorovati. Za to lahko kvote nastavite na podlagi datotečnega sistema, bodisi za posamezne uporabnike bodisi za skupine.

Tako je omejena uporaba diska, dovoljena za določenega uporabnika ali določeno skupino, in lahko ste prepričani, da nepreviden (ali zlonamerni) uporabnik vaših diskov ne bo napolnil do konca.

Prva stvar, ki jo morate storiti, da omogočite kvote v datotečnem sistemu, je, da jo namestite z možnostmi usrquota ali grpquota (za kvote uporabnikov oziroma skupin) v/etc/fstab.

Omogočimo na primer uporabniške kvote na/dev/vg00/vol_backups in skupinske kvote na/dev/vg00/vol_projects.

Upoštevajte, da se UUID uporablja za identifikacijo vsakega datotečnega sistema.

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

Odklopite in znova pritrdite oba datotečna sistema:

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

Nato preverite, ali sta možnosti usrquota in grpquota prisotne v izhodu mount (glejte poudarjeno spodaj):

# mount | grep vg00

Na koncu zaženite naslednje ukaze za inicializacijo in omogočanje kvot:

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

Kljub temu pa zdaj dodelimo kvote uporabniškemu imenu in skupini, ki smo jo že omenili. Pozneje lahko kvote onemogočite s kvoto.

Nastavitev diskovnih kvot za Linux

Začnimo z nastavitvijo ACL za/home/varnostne kopije za uporabnika gacanepa, ki mu bo dal dovoljenja za branje, pisanje in izvajanje v tem imeniku:

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

Nato s,

# edquota -u gacanepa

Izdelali bomo mehko omejitev = 900 in trdo omejitev = 1000 blokov (1024 bajtov/blok * 1000 blokov = 1024000 bajtov = 1 MB) prostora na disku.

Število datotek, ki jih lahko ustvari ta uporabnik, lahko omejimo tudi na 20 in 25 kot mehke in trde omejitve.

Zgornji ukaz bo sprožil urejevalnik besedil ($EDITOR) z začasno datoteko, kjer lahko nastavimo prej omenjene omejitve:

Te nastavitve bodo povzročile, da se uporabniku gacanepa prikaže opozorilo, ko je dosegel omejitev 900 blokov ali 20 inode za privzeto mirovalno obdobje 7 dni.

Če situacija s presežnimi kvotami do takrat ni bila odpravljena (na primer z odstranjevanjem datotek), mehka omejitev postane stroga omejitev in temu uporabniku ne bo dovoljeno uporabljati več prostora za shranjevanje ali ustvarjati več datotek.

Za preizkus naj uporabnik gacanepa poskusi ustvariti prazno datoteko z imenom MB z imenom test1 znotraj/doma/varnostne kopije:

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

Kot lahko vidite, datoteka za pisanje ne uspe zaradi presežene kvote diska. Ker je na disk zapisano le prvih 1000 KB, bo rezultat v tem primeru najverjetneje poškodovana datoteka.

Podobno lahko ustvarite ACL za skupine razvijalcev, da omogočite članom te skupine rwx dostop do/home/projects:

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

In omejitve kvot nastavite z:

# edquota -g developers

Tako kot smo že prej z uporabnikom gacanepa.

Grace period lahko z izvajanjem določite za poljubno število sekund, minut, ur, dni, tednov ali mesecev.

# edquota -t

in posodabljanje vrednosti pod Block grace period in Inode grace period.

V nasprotju z uporabo blokov ali inode (ki so nastavljene na osnovi uporabnika ali skupine) je obdobje mirovanja nastavljeno za celoten sistem.

Za prijavo kvot lahko uporabite kvoto -u [user] ali quota -g [group] za hitri seznam ali repquota -v [/ path/to/datotečni sistem] za podrobnejše (podrobno) in lepo oblikovano poročilo.

Seveda boste želeli [uporabnik] , [skupina] in [/ pot/do/datotečnega sistema] nadomestiti z določenim uporabnikom/imena skupin in datotečni sistem, ki ga želite preveriti.

Povzetek

V tem članku smo razložili, kako za uporabnike in skupine nastaviti sezname nadzora dostopa in diskovne kvote. Z uporabo obeh boste lahko učinkoviteje upravljali dovoljenja in uporabo diska.

Če želite izvedeti več o kvotah, se lahko obrnete na Mini-HowTo o kvotah v Linux Documentation Project

Ni treba posebej poudarjati, da lahko tudi na nas odgovorimo na vprašanja. Preprosto jih oddajte s pomočjo obrazca za komentar spodaj in z veseljem si bomo ogledali.