Hvordan bruke chmod Command på Linux

Kontroller hvem som kan få tilgang til filer, søke i kataloger og kjøre skript ved hjelp av Linux- chmodkommandoen. Denne kommandoen endrer Linux-filtillatelser, som ser kompliserte ut ved første øyekast, men som faktisk er ganske enkle når du vet hvordan de fungerer.

chmod Endrer filtillatelser

I Linux kontrolleres hvem som kan gjøre hva med en fil eller katalog via sett med tillatelser. Det er tre sett med tillatelser. Ett sett for eieren av filen, et annet sett for medlemmene i filens gruppe, og et siste sett for alle andre.

Tillatelsene kontrollerer handlingene som kan utføres på filen eller katalogen. De tillater eller forhindrer at en fil blir lest, endret eller, hvis det er et skript eller program, kjøres. For en katalog styrer tillatelsene hvem som kan komme cdinn i katalogen og hvem som kan opprette eller endre filer i katalogen.

Du bruker  chmod kommandoen til å angi hver av disse tillatelsene. For å se hvilke tillatelser som er satt til en fil eller katalog, kan vi bruke ls.

Vise og forstå filtillatelser

Vi kan bruke alternativet -l(langt format) for å ha en lsliste over filtillatelser for filer og kataloger.

ls -l

På hver linje identifiserer det første tegnet typen oppføring som blir oppført. Hvis det er en bindestrek ( -), er det en fil. Hvis det er bokstaven d , er det en katalog.

De neste ni tegnene representerer innstillingene for de tre settene med tillatelser.

  • De tre første tegnene viser tillatelsene til brukeren som eier filen ( brukertillatelser ).
  • De tre midterste tegnene viser tillatelsene for medlemmer av filens gruppe ( gruppetillatelser ).
  • De tre siste tegnene viser tillatelsene for alle som ikke er i de to første kategoriene ( andre tillatelser ).

Det er tre tegn i hvert sett med tillatelser. Tegnene er indikatorer for tilstedeværelse eller fravær av en av tillatelsene. De er enten en bindestrek ( -) eller en bokstav. Hvis tegnet er en bindestrek, betyr det at tillatelse ikke er gitt. Hvis karakteren er en r, weller en x, er tillatelsen gitt.

Bokstavene representerer:

  • r : Lesetillatelser. Filen kan åpnes, og innholdet kan vises.
  • w : Skrivetillatelser. Filen kan redigeres, endres og slettes.
  • x : Utfør tillatelser. Hvis filen er et skript eller et program, kan den kjøres (kjøres).

For eksempel:

  •  --- betyr at det ikke er gitt tillatelser i det hele tatt.
  •  rwxbetyr at full tillatelse er gitt. Les, skriv og utfør indikatorene er alle til stede.

I skjermbildet vårt starter første linje med en d. Denne linjen refererer til en katalog som heter "arkiv". Eieren av katalogen er "dave", og navnet på gruppen som katalogen tilhører kalles også "dave".

De neste tre tegnene er brukertillatelsene for denne katalogen. Disse viser at eieren har full tillatelse. De r, wog xkarakterene er alle tilstede. Dette betyr at brukerens dave har lest, skrevet og utført tillatelser for den katalogen.

Det andre settet med tre tegn er gruppetillatelsene, disse er r-x. Disse viser at medlemmene av dave-gruppen har lest og utført tillatelser for denne katalogen. Det betyr at de kan liste opp filene og innholdet i katalogen, og de kan cd(utføre) i den katalogen. De har ikke skrivetillatelser, så de kan ikke opprette, redigere eller slette filer.

Det endelige settet med tre tegn er også  r-x. Disse tillatelsene gjelder for personer som ikke er underlagt de to første settene med tillatelser. Disse personene (kalt ”andre”) har lest og utført tillatelser for denne katalogen.

For å oppsummere har gruppemedlemmer og andre lest og utført tillatelser. Eieren, en bruker som heter dave, har også skrivetillatelser.

For alle de andre filene (bortsett fra skriptfilen mh.sh) har dave og medlemmer av dave-gruppen lese- og skriveegenskaper på filene, og de andre har bare lesetillatelser.

I det spesielle tilfellet med mh.sh-skriptfilen, har eieren dave og gruppemedlemmene lest, skrevet og utført tillatelser, og de andre har bare lese og utføre tillatelser.

Forstå tillatelsessyntaks

For å bruke for chmod å angi tillatelser, må vi fortelle det:

  • Hvem:  Hvem vi setter tillatelser til.
  • Hva : Hvilken endring gjør vi? Legger vi til eller fjerner tillatelsen?
  • Hvilken : Hvilken av tillatelsene setter vi?

Vi bruker indikatorer for å representere disse verdiene, og danner korte "tillatelsesuttalelser" som u+x, hvor "u" betyr "bruker" (hvem), "+" betyr add (hva), og "x" betyr utføringstillatelse (som) .

“Hvem” -verdiene vi kan bruke er:

  • u : Bruker, som betyr eieren av filen.
  • g : Gruppe, som betyr medlemmer av gruppen filen tilhører.
  • o : Andre, som betyr mennesker som ikke styres av uog gtillatelser.
  • a : Alt, som betyr alt ovenfor.

Hvis ingen av disse brukes, chmodoppfører seg som om “ a” hadde blitt brukt.

“Hva” verdiene vi kan bruke er:

  • - : Minuskilt. Fjerner tillatelsen.
  • + : Plusstegn. Gir tillatelsen. Tillatelsen legges til de eksisterende tillatelsene. Hvis du vil ha denne tillatelsen og bare denne tillatelsen, kan du bruke =alternativet, beskrevet nedenfor.
  • = : Likhetstegn. Sett en tillatelse og fjern andre.

"Hvilke" verdier vi kan bruke er:

  • r : Lesetillatelsen.
  • w : Skrivetillatelsen.
  • x : Utfør tillatelsen.

Angi og endre tillatelser

La oss si at vi har en fil der alle har full tillatelse til den.

ls -l new_ file.txt

Vi vil at brukeren skal ha lese- og skrivetillatelser, og at gruppen og andre brukere bare skal ha lesetillatelser. Vi kan gjøre følgende kommando:

chmod u = rw, og = r new_file.txt

Å bruke “=” -operatøren betyr at vi utsletter eksisterende tillatelser og deretter angir de som er spesifisert.

la oss sjekke den nye tillatelsen i denne filen:

ls -l ny_fil.txt

De eksisterende tillatelsene er fjernet, og de nye tillatelsene er satt, som vi forventet.

Hva med å legge til en tillatelse uten å fjerne de eksisterende tillatelsesinnstillingene? Vi kan gjøre det enkelt også.

La oss si at vi har en skriptfil som vi er ferdig med å redigere. Vi må gjøre det kjørbart for alle brukere. De nåværende tillatelsene ser slik ut:

ls -l new_script.sh

Vi kan legge til eksekveringstillatelsen for alle med følgende kommando:

chmod a + x new_script.sh

Hvis vi tar en titt på tillatelsene, ser vi at utføringstillatelsen nå er gitt til alle, og at de eksisterende tillatelsene fortsatt er på plass.

ls -l new_script.sh

Vi kunne ha oppnådd det samme uten “a” i “a + x” uttalelsen. Følgende kommando ville fungert like bra.

chmod + x new_script.sh

Angi tillatelser for flere filer

Vi kan bruke tillatelser til flere filer samtidig.

Dette er filene i gjeldende katalog:

ls -l

La oss si at vi vil fjerne skrivetillatelsene for de "andre" brukerne fra filer som har ".page" -utvidelse. Vi kan gjøre dette med følgende kommando:

chmod eller * .side

La oss sjekke hvilken effekt det har hatt:

ls -l

Som vi kan se, har lesetillatelsen blitt fjernet fra ".page" -filene for den "andre" kategorien av brukere. Ingen andre filer er berørt.

Hvis vi hadde ønsket å inkludere filer i underkataloger, kunne vi ha brukt alternativet -R(rekursivt).

chmod -R eller * .side

Numerisk stenografi

En annen måte å bruke chmoder å gi tillatelsene du vil gi til eieren, gruppen og andre som et tresifret nummer. Sifferet til venstre representerer tillatelsene for eieren. Det midterste sifferet representerer tillatelsene for gruppemedlemmene. Sifferet til høyre representerer tillatelsene for de andre.

Sifrene du kan bruke og hva de representerer, er oppført her:

  • 0: (000) Ingen tillatelse.
  • 1: (001) Utfør tillatelse.
  • 2: (010) Skrivetillatelse.
  • 3: (011) Skriv og utfør tillatelser.
  • 4: (100) Les tillatelse.
  • 5: (101) Les og utfør tillatelser.
  • 6: (110) Les og skriv tillatelser.
  • 7: (111) Les, skriv og utfør tillatelser.

Hver av de tre tillatelsene er representert av en av bitene i det binære ekvivalenten til desimaltallet. Så 5, som er 101 i binær, betyr å lese og utføre. 2, som er 010 i binær, vil bety skrivetillatelsen.

Ved hjelp av denne metoden angir du tillatelsene du vil ha; du legger ikke til disse tillatelsene til de eksisterende tillatelsene. Så hvis lese- og skrivetillatelser allerede var på plass, må du bruke 7 (111) for å legge til utførelsesrettigheter. Å bruke 1 (001) vil fjerne lese- og skrivetillatelsene og legge til utførelsestillatelsen.

La oss legge til lesetillatelsen tilbake på ".page" -filene for den andre kategorien av brukere. Vi må også angi bruker- og gruppetillatelser, så vi må sette dem til det de allerede er. Disse brukerne har allerede lese- og skrivetillatelser, som er 6 (110). Vi vil at de "andre" skal ha lese- og tillatelser, så de må settes til 4 (100).

Følgende kommando vil oppnå dette:

chmod 664 * .side

Dette setter tillatelsene vi trenger for brukeren, gruppemedlemmene og andre til det vi trenger. Brukerne og gruppemedlemmene tilbakestilles tillatelsene til det de allerede var, og de andre har lestillatelsen gjenopprettet.

ls -l

Avanserte instillinger

Hvis du leser man-siden for å chmodse, er det noen avanserte alternativer relatert til SETUID- og SETGID-bitene, og til begrenset sletting eller "klebrig" bit.

For 99% av tilfellene du trenger chmod, vil alternativene som er beskrevet her, dekke deg.