Sådan bruges chmod Command på Linux

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

chmod Ændrer filtilladelser

I Linux, der kan gøre hvad ved en fil eller et bibliotek styres gennem sæt 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 biblioteket. De tillader eller forhindrer enten, at en fil læses, ændres eller, hvis det er et script eller program, udføres. For et bibliotek styrer tilladelserne, hvem der kan komme cdind i biblioteket, og hvem der kan oprette eller ændre filer i biblioteket.

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

Visning og forståelse af filtilladelser

Vi kan bruge indstillingen -l(langt format) til at have en lsliste over filtilladelser til filer og mapper.

ls -l

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

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 ( brugerrettigheder ).
  • De tre midterste 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 et bindestreg, betyder det, at der ikke gives tilladelse. Hvis karakteren er en r, weller en x, er der givet tilladelse.

Bogstaverne repræsenterer:

  • r : Læs tilladelser. Filen kan åbnes, og dens indhold kan ses.
  • w : Skriv tilladelser. 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 slet ikke er givet tilladelser.
  •  rwxbetyder, at der er givet fuld tilladelse. Indikatorerne for læsning, skrivning og udførelse er alle til stede.

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

De næste tre tegn er brugerrettighederne til denne mappe. Disse viser, at ejeren har fulde tilladelser. De r, wog xtegnene er alle til stede. Dette betyder, at brugerdave har læst, skrevet og udført tilladelser til den pågældende mappe.

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

Det sidste sæt på tre tegn er også  r-x. Disse tilladelser gælder for personer, der ikke er underlagt de to første sæt tilladelser. Disse mennesker (kaldet ”andre”) har læst og udført tilladelser til denne mappe.

Så for at opsummere har gruppemedlemmer og andre læst og udført 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æsnings- og skriveegenskaber på filerne, og de andre har kun læsetilladelser.

I det specielle tilfælde af mh.sh-scriptfilen har ejerens dave og gruppemedlemmerne læst, skrevet og udført tilladelser, og de andre har kun læst og udført tilladelser.

Forståelse af tilladelsessyntaks

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

  • Hvem:  Hvem vi indstiller tilladelser til.
  • Hvad : Hvilken ændring foretager vi? Tilføjer eller fjerner vi tilladelsen?
  • Hvilken : Hvilken af ​​tilladelserne indstiller vi?

Vi bruger indikatorer til at repræsentere disse værdier og danner korte "tilladelseserklæringer" som u+x, hvor "u" betyder "bruger" (hvem), "+" betyder tilføj (hvad) og "x" betyder eksekveringstilladelse (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 mennesker, der ikke styres af uog gtilladelser.
  • a : Alt, hvilket betyder alt ovenstående.

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

De "hvad" -værdier, vi kan bruge, er:

  • - : Minustegn. Fjerner tilladelsen.
  • + : Plustegn. Giver tilladelse. Tilladelsen føjes til de eksisterende tilladelser. Hvis du vil have denne tilladelse og kun denne tilladelse, skal du bruge =indstillingen beskrevet nedenfor.
  • = : Lige tegn. Angiv en tilladelse, og fjern andre.

De "hvilke" værdier, vi kan bruge, er:

  • r : Læsetilladelsen.
  • w : Skrivetilladelsen.
  • x : Udfør tilladelsen.

Indstilling og ændring af tilladelser

Lad os sige, at vi har en fil, hvor alle har fuld tilladelse 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 hjælp af følgende kommando:

chmod u = rw, og = r new_file.txt

Brug af "=" -operatøren betyder, at vi udsletter eksisterende tilladelser og derefter indstiller de angivne.

lad os kontrollere den nye tilladelse til denne fil:

ls -l ny_fil.txt

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

Hvad med at tilføje en tilladelse uden at fjerne de eksisterende tilladelsesindstillinger? Vi kan også gøre det let.

Lad os sige, at vi har en scriptfil, som vi er færdig 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 kigger på tilladelserne, ser vi, at eksekveringstilladelsen nu gives til alle, og at de eksisterende tilladelser stadig er på plads.

ls -l new_script.sh

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

chmod + x new_script.sh

Indstilling af tilladelser til flere filer

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

Dette er filerne i det aktuelle bibliotek:

ls -l

Lad os sige, at vi vil fjerne skrivetilladelserne for de "andre" brugere fra filer, der har ".page" -udvidelsen. Vi kan gøre dette med følgende kommando:

chmod eller * .side

Lad os kontrollere, hvilken effekt det har haft:

ls -l

Som vi kan se, er læsetilladelsen fjernet fra ".page" -filerne for "anden" -kategorien af ​​brugere. Ingen andre filer er berørt.

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

chmod -R eller * .side

Numerisk stenografi

En anden måde at bruge chmoder at give de tilladelser, du ønsker at give til ejeren, gruppen og andre som et trecifret nummer. Cifferet længst til venstre repræsenterer ejerens tilladelser. Det midterste ciffer repræsenterer tilladelserne for gruppemedlemmerne. Cifferet 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) Skriv tilladelse.
  • 3: (011) Skriv og udfør tilladelser.
  • 4: (100) Læs tilladelse.
  • 5: (101) Læs og udfør tilladelser.
  • 6: (110) Læse- og skrivetilladelser.
  • 7: (111) Læs, skriv og udfør tilladelser.

Hver af de tre tilladelser er repræsenteret af et af bitene i det binære ækvivalent med decimaltallet. Så 5, som er 101 i binær, betyder læse og udføre. 2, som er 010 i binær, ville betyde skrivetilladelsen.

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

Lad os tilføje læsetilladelsen tilbage på ".page" -filerne for den anden kategori af brugere. Vi skal også indstille bruger- og gruppetilladelserne, så vi er nødt til at indstille dem til det, de allerede er. Disse brugere har allerede læse- og skrivetilladelser, hvilket er 6 (110). Vi ønsker, at de "andre" skal have læsning og tilladelser, så de skal indstilles til 4 (100).

Følgende kommando vil udføre dette:

chmod 664 * .side

Dette indstiller de tilladelser, vi har brug for for brugeren, gruppemedlemmerne og andre, til det, vi har brug for. Brugerne og gruppemedlemmerne nulstilles deres tilladelser til, hvad de allerede var, og de andre har læst tilladelsen gendannet.

ls -l

Avancerede indstillinger

Hvis du læser chmodmandsiden for at se, er der nogle avancerede indstillinger relateret til SETUID- og SETGID-bitene og til den begrænsede sletning eller "klæbrig" bit.

I 99% af de sager, du har brug chmodfor, får du de muligheder, der er beskrevet her, dækket.