Denne vejledning beskriver adgangskontrollister i Linux, hvad de bruges til, og hvordan man administrerer dem.
Som systemadministrator bruger du sandsynligvis en del tid på at konfigurere tilladelser til brugere og grupper på dit system.
Filtilladelser er allerede ret praktiske for at give læse-, skrive- eller udførelsestilladelser til mapper eller filer.
Men hvad nu, hvis vi har brug for en mere præcis måde at give tilladelser til mapper eller filer på?
Hvad nu, hvis jeg ønsker at give adgang til en fil til en bestemt bruger eller en bestemt gruppe, som ikke er den aktuelle ejer af filen?
Det er præcis, hvad adgangskontrollister, også forkortet ACL, løser på et Linux-system.
I dagens tutorial ser vi meget nøje på adgangskontrollister, hvad de er, og hvordan de bruges for at konfigurere et Linux-system korrekt.
Er du klar?
Indholdsfortegnelse
- Hvad du vil lære
- Grundlæggende om adgangskontrollister på Linux
- Definition af adgangskontrollister
- Liste over adgangskontrollister
- Skabelse af adgangskontrollister på Linux
- Kontrol af installation af ACL-pakker
- Indstilling af adgangskontrollister ved hjælp af setfacl
- Liste over adgangskontrollister ved hjælp af getfacl
- Arbejde med adgangskontrollisternes maske
- Skabelse af standardindstillinger for adgangskontrollister på mapper
- Sletning af standardadgangskontrollister på mapper
- Konklusion
Hvad du vil lære
Hvis du følger denne tutorial til slutningen, vil du lære om følgende emner:
- Hvad adgangskontrollister er, og hvordan de kan læses fra ls kommandoen;
- Hvordan man indstiller grundlæggende tilladelser på en fil ved hjælp af kommandoen setfacl:
- Hvordan man læser adgangskontrollister ved hjælp af kommandoen getfacl;
- Hvad er adgangskontrollistens maske, og hvordan den skal læses;
- Hvad standardindstillinger for adgangskontrollister er, og hvordan de kan bruges effektivt
Det er et ret langt program, så lad os uden videre begynde med en hurtig definition af, hvad adgangskontrollister er.
Grundlæggende om adgangskontrollister på Linux
På Linux er der to måder at indstille tilladelser til brugere og grupper på : med almindelige filtilladelser eller med adgangskontrollister.
Definition af adgangskontrollister
Access control lists bruges på Linux-filsystemer til at indstille brugerdefinerede og mere personlige tilladelser på filer og mapper. ACL’er giver filejere eller privilegerede brugere mulighed for at tildele rettigheder til bestemte brugere eller bestemte grupper.
I Linux er tilladelserne, som du sikkert ved, opdelt i tre kategorier : en til ejeren af filen, en til gruppen og en til de andre.
I nogle tilfælde kan du imidlertid ønske at give adgang til en mappe (f.eks. eksekveringstilladelsen) til en bestemt bruger uden at skulle sætte denne bruger ind i filens gruppe.
Det er netop derfor, at adgangskontrollister blev opfundet i første omgang.
Liste over adgangskontrollister
På Linux er adgangskontrollister ikke aktiveret, når du opretter en ny fil eller mappe på din vært (undtagen hvis en overordnet mappe har nogle ACL’er foruddefineret).
For at se, om der er defineret adgangskontrollister for en fil eller mappe, skal du køre kommandoen ls og kigge efter et “+”-tegn i slutningen af tilladelseslinjen.
$ ls -l
For at vise forskellen, er her forskellen, når du oplister filer på en minimalinstans.
Nu da du har nogle grundlæggende oplysninger om adgangskontrollister, skal vi se, hvordan du kan begynde at oprette grundlæggende ACL for dine filer og mapper.
Skabelse af adgangskontrollister på Linux
Hvor du begynder med ACL-kommandoer, er det vigtigt, at pakkerne er installeret på din vært.
Kontrol af installation af ACL-pakker
Det er måske ikke tilfældet, hvis du har valgt at have en minimal server kørende.
Start med at kontrollere hjælpen relateret til setfacl ved at køre følgende kommando
$ setfacl --help
Hvis din vært ikke kan finde kommandoen setfacl, skal du sørge for at have installeret de nødvendige pakker til ACL-håndtering.
$ sudo apt-get install acl -y
Bemærk, at du skal have sudo privilegier på Debian 10 for at køre denne kommando.
Kør kommandoen setfacl, og sørg for, at du denne gang kan se hjælpekommandoerne.
Nu, hvor din vært er korrekt konfigureret, kan vi se, hvordan kommandoen setfacl fungerer.
Indstilling af adgangskontrollister ved hjælp af setfacl
Med adgangskontrollister er der to hovedkommandoer, som du skal huske : setfacl og getfacl.
I dette kapitel vil vi se på setfacl-kommandoen, da getfacl-kommandoen er ret selvforklarende.
Setfacl-kommandoen bruges på Linux til at oprette, ændre og fjerne adgangskontrollister på en fil eller mappe.
Setfacl har følgende syntaks
$ setfacl {-m, -x} {u, g}:<name>: <file, directory>
Hvor krøllede parenteser betyder en af følgende muligheder, og almindelige parenteser betyder et eller flere elementer.
- -m : betyder, at du vil ændre en eller flere ACL-poster på filen eller mappen.
- -x : betyder, at du vil fjerne en eller flere ACL-poster på en fil eller mappe.
- {u, g} : hvis du vil ændre ACL’en for en bruger eller for en gruppe.
- name : dette er en valgfri parameter, den kan udelades, hvis du ønsker at indstille ACL-poster for hver bruger eller for hver gruppe på din vært.
- : for at indstille læse-, skrive- eller udførelsestilladelser på filen eller mappen.
For eksempel, for at indstille specifikke skrivetilladelser for en bruger på en fil, skal du skrive følgende kommando
$ setfacl -m u:user:w <file, directory>
For at indstille udførelsestilladelser for alle brugere på din vært, ville du skrive følgende kommando
$ setfacl -m u::x <file, directory>
For at indstille fulde tilladelser til en bestemt gruppe på din vært ville du skrive setfacl på denne måde
$ setfacl -m g:group:rwx <file, directory>
Så lad os nu sige, at du vil fjerne en ACL-post fra en fil.
For at fjerne en brugerspecifik post fra en fil skal du angive x-indstillingen.
Bemærk : du kan ikke specifikke rettigheder fra en enkelt ACL-post, hvilket betyder, at du ikke kan fjerne skrivetilladelser, mens du beholder ACL-læsetilladelserne aktive.
$ setfacl -x u:<user> <file, directory>
Sådan skal du for at fjerne ACL relateret til grupper på din vært skrive følgende kommando
$ setfacl -x g:<group> <file, directory>
Nu da du har set, hvordan du nemt kan oprette adgangskontrollister på Linux, er det tid til at se, hvordan du kan kontrollere eksisterende adgangskontrollister på filer og mapper.
Liste over adgangskontrollister ved hjælp af getfacl
Kommandoen getfacl bruges på Linux til at udskrive en komplet liste over alle almindelige tilladelser og adgangskontrollistetilladelser på en fil eller et bibliotek.
Getfacl kan bruges med følgende syntaks
$ getfacl <file, directory>
Getfacl-kommandoen er opdelt i flere kategorier :
- Filnavn, ejer og gruppe : oplysninger om bruger- og gruppeejerskab vises øverst;
- Brugertilladelser : først vil du finde almindelige brugertilladelser, også kaldet den ejende bruger, efterfulgt af eventuelle brugerspecifikke ACL-poster (kaldet navngivne brugere)
- Gruppetilladelser : Ejergrupper præsenteres efterfulgt af gruppespecifikke ACL-poster, også kaldet navngivne grupper
- Maske : der begrænser de tilladelser, der gives til ACL-poster, masken vil blive beskrevet i detaljer i næste afsnit;
- Andre tilladelser : disse tilladelser er altid aktive, og dette er den sidste kategori, der udforskes, når ingen andre tilladelser passer til den aktuelle bruger eller gruppe.
Arbejde med adgangskontrollisternes maske
Som du sikkert har set på det sidste skærmbillede, er der en maskepost mellem navngivne grupper og de andre tilladelser.
Men hvad bruges denne maske til?
ACL-masken er forskellig fra filoprettelsesmasken (umask), og den bruges for at begrænse eksisterende ACL-poster, der findes på en fil eller mappe.
ACL-masken bruges som det maksimale sæt af ACL-tilladelser uanset eksisterende tilladelser, der overstiger ACL-masken.
Som altid siger et diagram hundrede ord.
Accl-masken opdateres, hver gang du kører en setfacl-kommando, medmindre du angiver, at du ikke ønsker at opdatere masken med -n-flaget.
For at forhindre, at masken opdateres, skal du køre setfacl med følgende kommando
$ setfacl -n -m u:antoine:rwx <file, directory>
Som du kan se i dette eksempel, har jeg indstillet brugeren “antoine” til at have fulde tilladelser til filen.
Masken er indstillet til at begrænse tilladelserne til læse- og skrivetilladelser.
Som følge heraf er de “effektive tilladelser”, der er indstillet på denne fil for denne bruger, læse- og skrivetilladelser, og udførelsestilladelsen er ikke givet.
Bemærk : hvis dit maksimale sæt tilladelser afviger fra maskeposten, vil du blive præsenteret for en effektiv linje, der beregner det “reelle” sæt af ACL-poster, der anvendes.
Skabelse af standardindstillinger for adgangskontrollister på mapper
Som allerede nævnt i denne artikel er det muligt at oprette ACL-poster på mapper, og de fungerer på samme måde som filadgangskontrollister.
Der er dog en lille forskel, når det drejer sig om mapper : du har mulighed for at oprette standardindstillinger for adgangskontrollister.
Defaultindstillinger for adgangskontrollister bruges til at oprette ACL-poster på en mappe, som vil blive arvet af objekter i denne mappe, f.eks. filer eller undermapper.
Når du opretter standard ACL-poster :
- Filer, der oprettes i denne mappe, arver de ACL-poster, der er angivet i den overordnede mappe
- Undermapper, der oprettes i denne mappe, arver ACL-posterne samt standard-ACL-posterne fra den overordnede mappe.
For at oprette standard-ACL-poster skal du angive -d-indstillingen, når du indstiller ACL med kommandoen setfacl.
$ setfacl -d -m {u, g}:<name>: <directory>
For at tildele læsetilladelser til alle filer, der oprettes i en mappe, skal du f.eks. køre følgende kommando
$ setfacl -d -m u::r directory
Nu, når en fil oprettes i denne acl-mappe, kan du se, at standard ACL-poster anvendes på filen.
Sådan vil en mappe, når den oprettes i acl-mappen, arve de standard ACL-poster, der er angivet i den overordnede mappe.
Bemærk, at det anbefales at angive standardtilladelser for alle tre kategorier (bruger, gruppe og andet).
Det er faktisk sådan, at hvis du angiver en af de tre poster, vil de resterende to blive oprettet med tilladelser, der er relateret til filoprettelsesmasken.
Sletning af standardadgangskontrollister på mapper
For at slette eksisterende standardadgangskontrollister på mapper skal du bruge -k-flaget med kommandoen setfacl.
$ setfacl -k <directory>
Givet det eksempel, vi angav tidligere, kan du her se, hvordan du sletter standardposter
$ setfacl -k acl-directory
Bemærk, at sletning af ACL-poster fra den overordnede mappe ikke sletter ACL-poster i filer eller mapper, der er indeholdt i den overordnede mappe.
For at fjerne standard ACL-poster i en mappe og alle undermapper skal du bruge en rekursiv indstilling (-R)
$ setfacl -kR <directory>
Konklusion
I denne vejledning lærte du om adgangskontrollister i Linux, getfacl- og setfacl-kommandoen.
Du lærte mere om masken for adgangskontrollister, og hvordan standard ACL bruges til at oprette ACL-poster på filer og undermapper, der er indeholdt i den overordnede mappe.
Hvis du er nysgerrig på Linux-systemadministration, har vi mange flere tutorials om emnet, sørg for at læse dem!