Setfacl -kommandoen i Linux

Setfacl -kommandoen i Linux
“Denne opplæringen forklarer hvordan du bruker SETFACL -kommandoen for å definere ACL (Access Control List) tillatelser.

Tilgangskontrolllister (ACL) lar oss administrere tillatelser med tilleggsalternativer enn de som tilbys av POSIX -tillatelser (vanlige tillatelser vi administrerer med Chmod kommando).

Ved å lese denne opplæringen lærer du det viktigste setfacl Relaterte alternativer.

Dette dokumentet er optimalisert for begge brukerne som leter etter raskt setfacl Instruksjoner for å implementere og for brukere som ikke er kjent med ACL, som kan finne alt nødvendig teoretisk innhold som er nødvendig for å forstå det etter den praktiske delen. Jeg la også til et bord som oppsummerte setfacl Kommandoalternativer beskrevet nedenfor.

Alle eksempler som er inkludert i denne artikkelen inneholder skjermbilder, noe som gjør det enkelt for hver Linux -bruker å forstå dem.”

SETFACL -kommandoalternativene

Før du begynner med setfacl Kommando, la oss sjekke gjeldende tillatelser av filen som heter . For å sjekke gjeldende ACL -tillatelser, utfør getfacl Kommando ved hjelp av følgende syntaks:

getfacl

I mitt tilfelle utfører jeg kommandoen vist på skjermdumpen nedenfor.

getfacl file1

Som du kan se på skjermbildet ovenfor, har filen standard POSIX -tillatelser for eieren som heter Linuxhint (lesing og skriving), for Linuxhint gruppe (lesing), og for andre (lesing). Brukeren og gruppen er Linuxhint.

Dette er tillatelsene vi bruker ved hjelp av Chmod Kommando, som lar oss definere tillatelser for eieren, gruppen og andre.

La oss nå si at vi ønsker å legge til tilpassede tillatelser for en annen spesifikk bruker ved hjelp av ACL utvidede tillatelser.

I eksemplet nedenfor vil jeg gi lesing, skriving og utførelsesstillatelser over den samme filen til brukeren Linuxhint2. Deretter løper jeg getfacl igjen for å sjekke endringene.

setfacl -m u: linuxhint2: rwx fil1

Hvor:

  • setfacl: Påkaller programmet for å administrere tillatelser.
  • -m: Dette flagget brukes til å endre tillatelser.
  • U: Linuxhint2: RWX: Angir brukeren Linuxhint2 (U: Linuxhint2) og gir ham lesing, skriving og utførelser (: RWX).
  • fil1: Målfilen som tillatelser er endret/brukt.

MERK: Som du kan se i forrige skjermbilde, i tillegg til regelmessige tillatelser, kan vi se en ny bruker (Linuxhint2) med tilpassede tillatelser ble lagt til, og en ny linje kalt en maske; Dette vil bli forklart senere nedenfor.

Men nå, la oss anta at vi vil gi tillatelser til en annen gruppe i stedet for en annen bruker. Syntaksen er nesten den samme, bortsett fra u: alternativ, som må erstattes med g: Som jeg viste i følgende figur, der gruppen Linuxhint3 er gitt lese- og skrivetillatelser. Så løper jeg getfacl For å sjekke modifikasjoner.

setfacl -m g: linuxhint3: rw file1

Som du kan se, en ny gruppe (Linuxhint3) ble lagt til med lese- og skrivetillatelser.

La oss nå forklare maske linje som dukket opp etter at vi søkte om utvidede ACL -tillatelser.

De maske tillater overskrivningstillatelser for brukere, grupper eller andre, bortsett fra eieren. Hvis masken er r, Brukere, grupper og andre (alle unntatt eieren) med tidligere effektiv skriving eller utførelsesstillatelser vil miste dem. Maskegrensen rammer alle brukere bortsett fra eieren. Det er en funksjon å overskrive eksisterende tillatelser, begrense dem eller øke dem.

For å endre masken, trenger du ikke spesifisere brukere eller grupper; Bare spesifiser masken etterfulgt av tillatelser ved bruk av m: Som vist i følgende eksempel.

setfacl -m m: r fil1

Som du kan se, etter å ha satt en maske med en lesegrense, er Linuxhint2 Bruker, som tidligere hadde lest, skriving og utførelsestillatelser, og gruppen Linuxhint3, som hadde lese- og skrivetillatelser, har nå bare lesing effektiv tillatelse. Masklesningsgrensen overskrev deres tidligere tillatelser. Bare eierens tillatelser forblir uberørt.

Men hvis masken er innstilt på å lese tillatelser, og du gir en bruker, gruppe eller annet mer enn lesetillatelser, vil masken automatisk bli endret, og øke grensen i henhold til de nyinnlyste tillatelsene. Som standard kan ikke maskegrensen være lavere enn en eksisterende innvilget tillatelser til annet enn eieren (vi vil se hvordan du kan forhindre dette senere nedenfor).

Dette betyr hvis masken er satt til r (Lesing), og jeg gir en bruker ekstra skrive- og utførelsestillatelser (RWX), masken vil bli RWX.

La oss først se vårt nåværende scenario, der masken er r- (Bare lesetillatelse).

La oss se hva som skjer hvis jeg legger til utførelses- og skrivetillatelser for brukeren Linuxhint2, som for øyeblikket bare har effektive lesetillatelser (som alle unntatt eieren).

setfacl -m u: linuxhint2: rwx fil1

Som du kan se, ikke bare Linuxhint2 Brukertillatelser ble oppdatert, men også masken. Dette fordi masken som standard representerer en grense, og hvis grensen overskrides med en ny ordre, øker den.

Du kan ha spesifikke masketillatelser og gi ytterligere tillatelser til en bestemt bruker, gruppe eller andre uten å få masken endret ved å implementere -N -flagget.

De -n Flaget instruerer ACL om å holde masken uendret, selv om noen tillatelser overstiger den.

La oss se det nye scenariet, der masken er satt til r-

I eksemplet nedenfor, brukeren Linuxhint2 får skriving og utførelsesstillatelser, men -n FLAG er implementert for å forhindre at masken blir endret.

Som du kan se nedenfor, Linuxhint2 Bruker fikk rettigheter til skriving og utførelse, men masken forblir uendret som instruert av -n flagg.

setfacl -n -m u: linuxhint2: wx file1

De -d Flagg brukes til å definere standardtillatelser for innholdet i en katalog. Dette flagget påvirker ikke katalogtillatelsene, men bare innholdet, inkludert filer og underkataloger.

Dette flagget kan for eksempel være nyttig for å lage standardtillatelser for en bestemt bruker eller gruppe over katalogens innhold. Når nye filer opprettes i den katalogen, får de definerte brukerne eller gruppene sine standarddefinerte tillatelser.

I det gjeldende scenariet er det en katalog med følgende tillatelser.

I eksemplet nedenfor, Annen (Alle brukere som ikke er eiere eller grupper) vil bli gitt som standard lesetillatelser for innholdet i katalogen som heter "katalog.”

setfacl -d -m o: r katalog

Som du kan se på skjermdumpen ovenfor, gjenstår standardtillatelsene for bruker og gruppe, mens standard tillatelsene til Annen ble endret til bare å lese. Nå, hvis nye filer og underkataloger opprettes i "katalog,Andre vil få lesetillatelser som standard.

De -R Flagget lar deg bruke ACL -regler rekursivt. Når -R er implementert, de definerte tillatelsene vil påvirke den spesifiserte katalogen og alle dens filer og underkatalog. Dette flagget er til stede i mange Linux -kommandoer for rekursive oppgaver.

Følgende kommando gir Annen lese og skrive tillatelser for Katalog1 rekursivt.

setfacl -r -m o: rw katalog1

ACL lar deg ta sikkerhetskopi av tillatelser som kan gjenopprettes senere.

I det følgende bildet brukes GetFaCL -kommandoen til å lage en rekursiv sikkerhetskopi av "katalog”Til en fil som heter“aclpermissions.tekst.

getFaCl -r Directory> Aclpermissions.tekst

For å gjenopprette sikkerhetskopien, bruk -restaurere alternativ etterfulgt av =

I mitt tilfelle:

setfaCl -Restore = aclpermissions.tekst

Du kan også bruke SETFACL -kommandoen til å kopiere tillatelsene fra en fil til en annen.

Det nåværende scenariet for filbeholdningen er følgende:

I det følgende eksemplet kopierer jeg tillatelsene fra fil1 til en fil som heter “inventar.”

getfacl file1 | setfacl--set-fil =-Inventory

Hva er en ACL (tilgangskontrollliste)

En ACL er et Windows Native tillatelsessystem for å administrere tilgang til ressurser som filer, kataloger, partisjoner osv. Dette systemet er basert på objekter som tillatelser er definert for brukere, grupper og andre, inkludert individuelt, som vist ovenfor.

Tillatelsene er knyttet til den definerte filen, katalogen eller filsystemet som definerer tilgang for eieren, brukere, grupper eller andre.

Forskjell mellom ACL og Posix tillatelse

Mens med POSIX -tillatelser, kan brukere administrere tillatelser for eieren, gruppen og andre, tillater ACL styring av tilpassede tillatelser for alle, inkludert brukere og grupper.

I tillegg implementerer ACL nye tillatelsestyper, som standardtillatelsene som er forklart i denne opplæringen.

Dette gir fleksibilitet vi ikke kan glede oss over med vanlige POSIX -tillatelser. Likevel, som du ser, fungerer begge i kombinasjon, og kombinasjonen deres gir en sterk tillatelsesstruktur.

SETFACL -kommandoen brukes til å angi ACL -tillatelser til filer, kataloger og filsystemer.
Dette brukes til å spesifisere filer, kataloger, brukere, grupper eller andre med de ønskede tillatelsene når de trenger å bryte POSIX -grenser. Ressurseieren og prosessene med CAP_FOWER har rett til å endre ACLS -tillatelser.

Tabellen nedenfor oppsummerer noen ACL -alternativer

Alternativer FUNKSJON
-m Endre ACL
-x Fjern all aclremove ACL
-b Fjern all ACL
-k Fjern standard tillatelser
-R Gjelder ACL rekursivt
-L Følger symbolske lenker
-P Følger ikke symbolske lenker
m: Definere maske
-Gjenopprett = Gjenoppretter ACL fra en sikkerhetskopifil opprettet med getfacl -R
-test Ikke bruker endringer, men viser resultatet
-n Ikke påvirke masken

Du kan finne mye mer informasjon om ACL og SETFACL -kommandoen på https: // linux.dø.nett/mann/5/acl og https: // linux.dø.nett/mann/1/setfacl.

Konklusjon

Som du kan se, lar ACL brukere å tilpasse tillatelser over POSIX -tillatelser Systemgrenser. Dette er ekstremt nyttig når ressursene må deles med spesifikke tilgangstyper. Som du kan se, er ACL lett å forstå og implementere og kan læres av enhver Linux -bruker uavhengig av kunnskapsnivået deres. ACL er et historisk unntak der Linux importerte en funksjon fra Windows. Du kan få tilleggsinformasjon på ACL på Man -siden.

Takk for at du leser denne opplæringen som forklarer hvordan du bruker SETFACL -kommandoen i Linux. Fortsett å følge bloggen vår for mer profesjonelt Linux -innhold.