Sådan bruger du chmod-kommandoen på Linux

Kontroller, hvem der kan få adgang til filer, søge i mapper og køre scripts ved hjælp af Linux’s chmod-kommando. Denne kommando ændrer Linux-filtilladelser, som ser komplicerede ud ved første øjekast, men som faktisk er ret enkle, når du først ved, hvordan de fungerer.

chmod Ændrer filtilladelser

I Linux styres hvem der kan gøre hvad ved en fil eller et bibliotek gennem sæt af tilladelser. Der er tre sæt tilladelser. Et sæt til ejeren af ​​filen, et andet sæt til medlemmerne af filens gruppe og et sidste sæt til alle andre.

Tilladelserne styrer de handlinger, der kan udføres på filen eller mappen. De enten tillader eller forhindrer en fil i at blive læst, ændret eller, hvis det er et script eller program, eksekveret. For en mappe bestemmer tilladelserne, hvem der kan cd ind i mappen, og hvem der kan oprette eller ændre filer i mappen.

Du bruger kommandoen chmod til at indstille hver af disse tilladelser. Til se, hvilke tilladelser der er indstillet på en fil eller et bibliotek, kan vi bruge ls.

Visning og forståelse af filtilladelser

Vi kan bruge muligheden -l (langt format) for at få ls til at vise filtilladelserne for filer og mapper.

ls -l

På hver linje identificerer det første tegn den type post, der vises. Hvis det er en bindestreg (-), er det en fil. Hvis det er bogstavet d, er det en mappe.

De næste ni tegn repræsenterer indstillingerne for de tre sæt tilladelser.

De første tre tegn viser tilladelserne for den bruger, der ejer filen (brugertilladelser).
De midterste tre tegn viser tilladelserne for medlemmer af filens gruppe (gruppetilladelser).
De sidste tre tegn viser tilladelserne for alle, der ikke er i de første to kategorier (andre tilladelser).

Der er tre tegn i hvert sæt tilladelser. Tegnene er indikatorer for tilstedeværelsen eller fraværet af en af ​​tilladelserne. De er enten en bindestreg (-) eller et bogstav. Hvis tegnet er en bindestreg, betyder det, at der ikke gives tilladelse. Hvis tegnet er et r, w eller et x, er denne tilladelse givet.

  Sådan installeres og bruges Stacer på Linux

Bogstaverne repræsenterer:

r: Læsetilladelser. Filen kan åbnes, og dens indhold kan ses.
w: Skrivetilladelser. Filen kan redigeres, ændres og slettes.
x: Udfør tilladelser. Hvis filen er et script eller et program, kan den køres (udføres).

For eksempel:

— betyder, at der overhovedet ikke er givet tilladelser.
rwx betyder, at der er givet fulde tilladelser. Læse-, skrive- og udfør-indikatorerne er alle til stede.

I vores skærmbillede starter den første linje med et d. Denne linje refererer til en mappe kaldet “arkiv”. Ejeren af ​​biblioteket er “dave”, og navnet på den gruppe, som biblioteket tilhører, kaldes også “dave.”

De næste tre tegn er brugertilladelserne for denne mappe. Disse viser, at ejeren har fulde tilladelser. Tegnene r, w og x er alle til stede. Dette betyder, at brugeren dave har læse-, skrive- og eksekveringstilladelser for den mappe.

Det andet sæt af tre tegn er gruppetilladelserne, disse er rx. Disse viser, at medlemmerne af dave-gruppen har læst og eksekveret tilladelser til denne mappe. Det betyder, at de kan liste filerne og deres indhold i mappen, og de kan cd (udføre) ind i den mappe. De har ikke skrivetilladelser, så de kan ikke oprette, redigere eller slette filer.

Det sidste sæt af tre karakterer er også rx. Disse tilladelser gælder for personer, der ikke er underlagt de første to sæt tilladelser. Disse personer (kaldet “andre”) har læst og eksekveret tilladelser på denne mappe.

Så for at opsummere har gruppemedlemmer og andre læst og eksekveret tilladelser. Ejeren, en bruger kaldet dave, har også skrivetilladelser.

For alle de andre filer (bortset fra mh.sh-scriptfilen) har dave og medlemmer af dave-gruppen læse- og skriveegenskaber på filerne, og de andre har kun læsetilladelser.

For det specielle tilfælde af mh.sh-scriptfilen, har ejeren dave og gruppemedlemmerne læse-, skrive- og eksekveringstilladelser, og de andre har kun læse- og eksekveringstilladelser.

Forståelse af tilladelsessyntaksen

For at bruge chmod til at indstille tilladelser, skal vi fortælle det:

Hvem: Hvem sætter vi tilladelser til.
Hvad: Hvilken forandring laver vi? Tilføjer eller fjerner vi tilladelsen?
Hvilken: Hvilken af ​​tilladelserne angiver vi?

Vi bruger indikatorer til at repræsentere disse værdier og danner korte “tilladelseserklæringer” såsom u+x, hvor “u” betyder “bruger” (hvem), “+” betyder tilføje (hvad), og “x” betyder udførelsestilladelsen (hvilken).

De “hvem”-værdier vi kan bruge er:

u: Bruger, hvilket betyder ejeren af ​​filen.
g: Gruppe, hvilket betyder medlemmer af den gruppe, filen tilhører.
o: Andre, hvilket betyder personer, der ikke er underlagt u- og g-tilladelserne.
a: Alle, hvilket betyder alt ovenstående.

  Sådan installeres Caddy Web Server på Linux

Hvis ingen af ​​disse bruges, opfører chmod sig, som om “a” var blevet brugt.

De “hvad”-værdier vi kan bruge er:

–: Minustegn. Fjerner tilladelsen.
+: Plustegn. Giver tilladelsen. Tilladelsen føjes til de eksisterende tilladelser. Hvis du vil have denne tilladelse og kun dette tilladelsessæt, skal du bruge = muligheden, beskrevet nedenfor.
=: Ligetegn. Indstil en tilladelse og fjern andre.

De “hvilke” værdier vi kan bruge er:

r: Læsetilladelsen.
w: Skrivetilladelsen.
x: Udførelsestilladelsen.

Indstilling og ændring af tilladelser

Lad os sige, at vi har en fil, hvor alle har fulde tilladelser til den.

ls -l new_ file.txt

Vi ønsker, at brugeren dave skal have læse- og skrivetilladelser, og at gruppen og andre brugere kun skal have læsetilladelser. Vi kan gøre ved at bruge følgende kommando:

chmod u=rw,og=r new_file.txt

Brug af “=””-operatoren betyder, at vi sletter alle eksisterende tilladelser og derefter indstiller de specificerede.

lad os tjekke den nye tilladelse på denne fil:

ls -l new_file.txt

De eksisterende tilladelser er blevet fjernet, og de nye tilladelser er blevet sat, som vi forventede.

Hvad med at tilføje en tilladelse uden at fjerne de eksisterende tilladelsesindstillinger? Det kan vi også nemt.

Lad os sige, at vi har en scriptfil, som vi er færdige med at redigere. Vi er nødt til at gøre det eksekverbart for alle brugere. Dens nuværende tilladelser ser sådan ud:

ls -l new_script.sh

Vi kan tilføje udførelsestilladelsen for alle med følgende kommando:

chmod a+x new_script.sh

Hvis vi tager et kig på tilladelserne, vil vi se, at udførelsestilladelsen nu er givet til alle, og de eksisterende tilladelser er stadig på plads.

ls -l new_script.sh

Vi kunne have opnået det samme uden “a” i “a+x”-sætningen. Den følgende kommando ville have fungeret lige så godt.

chmod +x new_script.sh

Indstilling af tilladelser for flere filer

Vi kan anvende tilladelser til flere filer på én gang.

Disse er filerne i den aktuelle mappe:

ls -l

Lad os sige, at vi ønsker at fjerne skrivetilladelserne for de “andre” brugere fra filer, der har filtypenavnet “.page”. Vi kan gøre dette med følgende kommando:

chmod o-r *.page

Lad os se hvilken effekt det har haft:

ls -l

Som vi kan se, er læsetilladelsen blevet fjernet fra “.page”-filerne for kategorien “andet” af brugere. Ingen andre filer er blevet berørt.

  Sådan spiller du Minecraft på Linux

Hvis vi havde ønsket at inkludere filer i undermapper, kunne vi have brugt -R (rekursiv) mulighed.

chmod -R o-r *.page

Numerisk stenografi

En anden måde at bruge chmod på er at give de tilladelser, du ønsker at give til ejeren, gruppen og andre som et trecifret nummer. Cifferet længst til venstre repræsenterer tilladelserne for ejeren. Det midterste ciffer repræsenterer tilladelserne for gruppemedlemmerne. Cifferet længst til højre repræsenterer tilladelserne for de andre.

De cifre, du kan bruge, og hvad de repræsenterer, er angivet her:

0: (000) Ingen tilladelse.
1: (001) Udfør tilladelse.
2: (010) Skrivetilladelse.
3: (011) Skrive og udføre tilladelser.
4: (100) Læsetilladelse.
5: (101) Læs og eksekver tilladelser.
6: (110) Læse- og skrivetilladelser.
7: (111) Læs, skriv og eksekver tilladelser.

Hver af de tre tilladelser er repræsenteret af en af ​​bits i den binære ækvivalent af decimaltallet. Så 5, som er 101 i binær, betyder læst og eksekveret. 2, som er 010 i binær, ville betyde skrivetilladelsen.

Ved at bruge denne metode indstiller du de tilladelser, du ønsker at have; du tilføjer ikke disse tilladelser til de eksisterende tilladelser. Så hvis læse- og skrivetilladelser allerede var på plads, skulle du bruge 7 (111) for at tilføje eksekveringstilladelser. Brug af 1 (001) ville fjerne læse- og skrivetilladelserne og tilføje udførelsestilladelsen.

Lad os tilføje læsetilladelsen tilbage på “.page”-filerne for de andre brugerkategorier. Vi skal også indstille bruger- og gruppetilladelserne, så vi skal indstille dem til, hvad de allerede er. Disse brugere har allerede læse- og skrivetilladelser, hvilket er 6 (110). Vi ønsker, at de “andre” skal have læst og tilladelser, så de skal indstilles til 4 (100).

Følgende kommando vil udføre dette:

chmod 664 *.page

Dette indstiller de tilladelser, vi kræver for brugeren, gruppemedlemmerne og andre, til det, vi har brug for. Brugerne og gruppemedlemmerne får deres tilladelser nulstillet til det, de allerede var, og de andre får læsetilladelsen gendannet.

ls -l

Avancerede indstillinger

hvis du læs man-siden for chmod vil du se, at der er nogle avancerede muligheder relateret til SETUID og SETGID bits, og til den begrænsede sletning eller “sticky” bit.

For 99% af de tilfælde, du skal bruge chmod til, vil de muligheder, der er beskrevet her, have dig dækket.