Nov 4, 2023

setfacl

setfacl je Linux komanda koja se koristi za postavljanje ACL (Access Control List) prava na datoteke i direktorijume. ACL prava omogućavaju precizniju kontrolu nad pristupom resursima u odnosu na osnovne Unix pristupne dozvole (chmod).

Evo nekoliko osnovnih opcija koje se često koriste sa setfacl:

  1. -m ili --modify: Ova opcija se koristi za izmenu postojećih ACL prava. Na primer, setfacl -m u:jane:rw file.txt će omogućiti korisniku "jane" čitanje i pisanje u datoteci "file.txt".

  2. -x ili --remove: Koristi se za uklanjanje ACL prava. Na primer, setfacl -x u:jane file.txt će ukloniti prava korisnika "jane" sa datoteke "file.txt".

  3. -b ili --remove-all: Ova opcija uklanja sve ACL prava sa datoteke ili direktorijuma.

  4. -d ili --default: Postavlja podrazumevana ACL prava za direktorijum. Podrazumevana prava se primenjuju na nove datoteke i direktorijume koji se kreiraju unutar tog direktorijuma.

  5. -R ili --recursive: Ova opcija se koristi za rekurzivnu primenu ACL prava na sve datoteke i direktorijume unutar određenog direktorijuma.

  6. -k ili --remove-default: Uklanja podrazumevana ACL prava postavljena na direktorijum.

  7. -n ili --no-mask: Onemogućava automatsko ažuriranje maske na osnovu postavljenih ACL prava.

  8. -v ili --version: Prikazuje verziju setfacl programa.

  9. -b ili --backup: Pravi rezervnu kopiju postojećih ACL prava pre nego što ih izmeni.

Napomena: Precizna sintaksa komande setfacl zavisi od vašeg sistema i distribucije Linux-a, pa je najbolje da koristite man setfacl kako biste dobili tačne informacije za vašu konkretnu konfiguraciju.


Primeri:

  1. Postavljanje ACL-a koji dozvoljava korisniku "john" čitanje i pisanje u datoteci "file.txt":
setfacl -m u:john:rw file.txt
  1. Postavljanje ACL-a za direktorijum "docs" koji omogućava korisniku "alice" pun pristup, a korisniku "bob" samo čitanje:
setfacl -m u:alice:rwx,u:bob:r-x docs
  1. Postavljanje maksimalnih prava (mask) za sve korisnike za datoteku "document.pdf":
setfacl -m m::rwx document.pdf
  1. Rekurzivno postavljanje ACL-a za sve datoteke i direktorijume u "projekat" direktorijumu tako da korisnik "manager" ima pun pristup:
setfacl -R -m u:manager:rwx projekat

Nakon što postavite ACL-ove, možete ih proveriti pomoću komande getfacl:

getfacl file.txt

Ova komanda će vam prikazati trenutne ACL-ove za datoteku "file.txt".

ACL - Lista kontorle pristupa

"ACL" se odnosi na "Access Control List" ili "Lista kontrole pristupa" na Linux operativnom sistemu. ACL-ovi su sistem za upravljanje dozvolama i kontrolu pristupa datotekama i direktorijumima koji ide iznad i dalje proširuje osnovni sistem dozvola na Linuxu.

Osnovni sistem dozvola na Linuxu uključuje tri osnovne kategorije korisnika: vlasnika datoteke, grupu vlasnika i sve ostale korisnike. Sa osnovnim sistemom dozvola, možete kontrolisati pristup datotekama i direktorijumima za ove tri kategorije korisnika (čitanje, pisanje i izvršavanje dozvola).

ACL-ovi omogućavaju detaljniju kontrolu pristupa, dopuštajući definisanje dodatnih korisnika i grupa i precizno dodeljivanje prava za svaku od njih. To znači da možete postaviti granularne dozvole za različite korisnike i grupe koji nisu obuhvaćeni osnovnim sistemom dozvola.

Na primer, možete omogućiti jednom korisniku samo čitanje datoteke, drugom korisniku dopustiti i čitanje i pisanje, a trećem korisniku omogućiti sva prava (čitanje, pisanje, izvršavanje). Isto tako, možete dodeliti različite grupe korisnika sa različitim dozvolama za istu datoteku.

Korišćenje ACL-ova je posebno korisno u situacijama gde je potrebna precizna kontrola pristupa, kao što su zajednički serveri, sistemi sa mnogo korisnika i više korisnika sa različitim potrebama za pristupom datotekama.

Kernel podrška za ACL

Kernel podrška za ACL (Access Control Lists) omogućava operativnom sistemu da podržava napredne metode kontrole pristupa na fajlovima i direktorijumima. Da biste proverili da li je kernel podrška za ACL omogućena, možete koristiti sledeće korake:

  1. Provera kernel konfiguracije:

    Otvorite terminal i izvršite sledeću komandu za proveru kernel konfiguracije:

    zcat /proc/config.gz | grep CONFIG_FS_POSIX_ACL

    Ova komanda će proveriti da li je podrška za ACL omogućena u kernel konfiguraciji. Ako je rezultat =y, to znači da je podrška za ACL uključena.

  2. Provera montiranog fajl sistema:

    Da biste proverili da li je ACL podrška omogućena za određeni montirani fajl sistem, koristite komandu mount:

    mount | grep acl

    Ova komanda će prikazati sve montirane fajl sisteme koji podržavaju ACL. Ako je prisutan odgovarajući unos, to znači da je ACL podrška omogućena za taj fajl sistem.

  3. Instalacija acl paketa (opciono):

    U nekim distribucijama Linuxa, podrška za ACL može biti isključena po podrazumevanim podešavanjima, ali možete je omogućiti instalacijom odgovarajućeg paketa. Na primer, na Debian ili Ubuntu sistemima, instalirajte paket acl komandom:

    sudo apt-get install acl

    Nakon instalacije, podrška za ACL će biti dostupna i kernel će je podržavati.

Nakon sprovođenja ovih koraka, trebali biste biti u mogućnosti da koristite ACL na vašem sistemu ako je podrška za ACL omogućena u kernelu.

Provera montiranog file sistema

Da biste proverili da li je ACL (Access Control Lists) podržan na montiranom fajl sistemu na Linuxu, možete koristiti komandu tune2fs. Ova komanda omogućava pregled i promenu osobina fajl sistema. Evo kako možete proveriti da li je ACL omogućen na mount tački:

  1. Prvo, pronađite putanju do mount tačke koju želite da proverite. Na primer, ako želite da proverite /mnt/data, možete koristiti komandu df da biste videli informacije o montiranim tačkama:

    df -h

    Na listi montiranih tačaka potražite putanju /mnt/data ili drugu montiranu tačku koja vas zanima.

  2. Nakon što pronađete mount tačku, možete koristiti tune2fs komandu da biste proverili da li je ACL omogućen. Zamijenite /dev/sdXY putanjom do fajl sistema na koji se montira mount tačka:

    sudo tune2fs -l /dev/sdXY | grep "Default mount options"

    Ako rezultat sadrži "acl", to znači da je ACL podrška omogućena za taj fajl sistem na montiranoj tački.

Na primer, ako rezultat izgleda ovako:

Default mount options: user_xattr acl

To ukazuje da su podešene podrške za "user_xattr" i "acl" na tom fajl sistemu.

Ova metoda vam omogućava da proverite da li je ACL omogućen za određeni fajl sistem na montiranoj tački.

getfacl

getfacl je Linux komanda koja se koristi za dobijanje i prikazivanje kontrolnih lista pristupa (ACL) za datoteke i direktorijume. ACL-ovi omogućavaju detaljniju kontrolu nad pravima pristupa datotekama i direktorijumima u odnosu na standardne Linux dozvole.

Osnovna sintaksa komande getfacl je:

getfacl [opcije] ime_datoteke_ili_direktorijuma

Neki od čestih parametara komande getfacl uključuju:

  • -p ili --skip: Preskače ispisivanje podrazumevanih dozvola i ispisuje samo eksplicitne ACL-ove.
  • -s ili --separator=separators: Definiše separator(e) koji će se koristiti za razdvajanje izlaznih informacija.

Primeri upotrebe komande getfacl:

  1. Prikazivanje ACL-ova za određenu datoteku:

    getfacl my_file.txt

    Ovo će prikazati ACL-ove za datoteku my_file.txt.

  2. Prikazivanje ACL-ova za određeni direktorijum:

    getfacl /path/to/my_directory

    Ovo će prikazati ACL-ove za direktorijum /path/to/my_directory.

  3. Prikazivanje samo eksplicitnih ACL-ova za datoteku (preskačući podrazumevane dozvole):

    getfacl -p my_file.txt
  4. Prikazivanje ACL-ova za više datoteka i direktorijuma:

    getfacl file1.txt file2.txt my_directory

    Ovo će prikazati ACL-ove za sve navedene datoteke i direktorijume.

Korišćenje komande getfacl je korisno kada želite detaljnije razumevanje ACL-ova koji se primenjuju na datoteke i direktorijume na vašem sistemu. ACL-ovi omogućavaju pristup različitim korisnicima i grupama sa različitim dozvolama, što je korisno u okruženjima gde je potrebna granularna kontrola nad pristupom resursima.