Android

Chmod-kommando i Linux (filtillatelser)

EXPLAINED: How to use "chmod" command [COMPLETE GUIDE]

EXPLAINED: How to use "chmod" command [COMPLETE GUIDE]

Innholdsfortegnelse:

Anonim

I Linux administreres tilgang til filene gjennom filtillatelser, attributter og eierskap. Dette sikrer at bare autoriserte brukere og prosesser kan få tilgang til filer og kataloger.

Denne opplæringen dekker hvordan du bruker chmod kommandoen til å endre tilgangstillatelser for filer og kataloger.

Linux-filtillatelser

La oss forklare den grunnleggende Linux-tillatelsesmodellen før du går videre.

I Linux er hver fil tilknyttet en eier og en gruppe og tildelt tilgangsrettigheter for tre forskjellige klasser av brukere:

  • Filseieren. Gruppemedlemmene. Andre (alle andre).

Fileierskap kan endres ved hjelp av chown og chgrp kommandoene.

Det er tre filtillatelsestyper som gjelder for hver klasse:

  • Lesetillatelsen. Skrivetillatelsen. Utfør tillatelsen.

Dette konseptet lar deg spesifisere hvilke brukere som har lov til å lese filen, skrive til filen eller utføre filen.

Filtillatelser kan vises ved å bruke kommandoen ls :

ls -l filename.txt

-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type

Det første tegnet viser filtypen. Det kan være en vanlig fil ( - ), katalog ( d ), en symbolsk lenke ( l ) eller en hvilken som helst annen spesiell filtype.

De neste ni tegnene representerer filtillatelsene, tre tripletter med tre tegn hver. Den første tripletten viser eierrettighetene, den andre gruppen tillatelser, og den siste tripletten viser alle andre tillatelser. Tillatelsene kan ha en annen betydning avhengig av filtype.

I eksemplet over ( rw-r--r-- ) betyr at rw- har lese- og skrivetillatelser ( rw- ), gruppen og andre har bare lesetillatelser ( r-- ).

Hver av de tre tillatelsestriplettene kan konstrueres av følgende tegn og har forskjellige effekter, avhengig av om de er satt til en fil eller til en katalog:

Effekten av tillatelser på filer

Tillatelse Karakter Betydning på fil
Lese - Filen er ikke lesbar. Du kan ikke se filinnholdet.
r Filen er lesbar.
Skrive - Filen kan ikke endres eller endres.
w Filen kan endres eller endres.
Henrette - Filen kan ikke kjøres.
x Filen kan kjøres.
s Hvis den finnes i user , setter den setuid biten. Hvis den finnes i group , angir den setgid biten. Det betyr også at x flagg er satt.

Når setuid eller setgid flaggene er satt på en kjørbar fil, kjøres filen med filens eier- og / eller gruppeprivilegier.

S Samme som s men x flagget er ikke satt. Dette flagget brukes sjelden på filer.
t Hvis den finnes i den others tripletten, setter den den sticky biten.

Det betyr også at x flagg er satt. Dette flagget er ubrukelig for filer.

T Samme som t men x flagget er ikke satt. Dette flagget er ubrukelig for filer.

Effekten av tillatelser på kataloger (mapper)

I Linux er kataloger spesielle typer filer som inneholder andre filer og kataloger.

Tillatelse Karakter Betydning på katalog
Lese - Katalogens innhold kan ikke vises.
r Katalogens innhold kan vises.

(f.eks. Du kan liste filer i katalogen med ls .)

Skrive - Katalogens innhold kan ikke endres.
w Katalogens innhold kan endres.

(f.eks. Du kan ikke opprette nye filer, slette filer.. osv.)

Henrette - Katalogen kan ikke endres til.
x Katalogen kan navigeres ved å bruke cd .
s Hvis den finnes i user , angir den setuid bit. Hvis den finnes i group , setter den setgid biten. Det betyr også at x flagg er satt. Når setgid flagget er satt på en katalog, arver de nye filene som er opprettet i den kataloggruppe-ID (GID), i stedet for den primære gruppe-IDen til brukeren som opprettet filen.

setuid har ingen effekt på kataloger.

S Samme som s men x flagget er ikke satt. Dette flagget er ubrukelig for kataloger.
t Hvis den finnes i den others tripletten, setter den den sticky biten.

Det betyr også at x flagg er satt. Når den klebrige biten er satt på en katalog, kan bare filens eier, katalogens eier eller administrasjonsbruker slette eller gi nytt navn til filene i katalogen.

T Samme som t men x flagget er ikke satt. Dette flagget er ubrukelig for kataloger.

Bruker chmod

chmod kommandoen har følgende generelle form:

chmod MODE FILE…

chmod kommandoen lar deg endre tillatelsene til en fil ved å bruke enten en symbol- eller numerisk modus eller en referansefil. Vi vil forklare modusene mer detaljert senere. Kommandoen kan godta en eller flere filer og / eller kataloger atskilt med mellomrom som argumenter.

Bare rot, fileieren eller brukeren med sudo-rettigheter, kan endre tillatelsene til en fil. Vær ekstra forsiktig når du bruker chmod , spesielt når du rekursivt endrer tillatelsene.

Symbolisk (tekst) metode

Syntaksen til chmod kommandoen når du bruker symbolmodus har følgende format:

chmod perms… FILE…

Det første settet med flagg ( ), flagger brukere, definerer hvilke brukere som klassifiserer tillatelsene til filen.

  • u - Fileieren. g - Brukerne som er medlemmer av gruppen. o - Alle andre brukere. a - Alle brukere, identiske med ugo .

Hvis brukerflagget er utelatt, er standard ett a og tillatelsene som er angitt av umask påvirkes ikke.

Det andre settet med flagg ( ), opererer flaggene, definerer om tillatelsene skal fjernes, legges til eller settes:

  • - Fjerner de spesifiserte tillatelsene. + Legger til spesifiserte tillatelser. = Endrer gjeldende tillatelser til de spesifiserte tillatelsene. Hvis ingen tillatelser er spesifisert etter = symbolet, fjernes alle tillatelser fra den angitte brukerklassen.

Tillatelsene ( perms… ) kan angis eksplisitt med enten null eller en eller flere av følgende bokstaver: r , w , x , X , s og t . Bruk en enkelt bokstav fra settet u , g og o når du kopierer tillatelser fra en til en annen brukerklasse.

Når du angir tillatelser for mer enn en brukerklasse ( ), bruk kommaer (uten mellomrom) for å skille de symboliske modusene.

Nedenfor er noen eksempler på hvordan du bruker chmod kommandoen i symbolsk modus:

  • Gi medlemmene av gruppen tillatelse til å lese filen, men ikke til å skrive og utføre den:

    chmod g=r filename

    Fjern kjørestillatelsen for alle brukere:

    chmod ax filename

    Fjern avvisende skrivetillatelse for andre brukere:

    chmod -R ow dirname

    Fjern lese, skrive og utføre tillatelse for alle brukere unntatt filens eier:

    chmod og-rwx filename

    Det samme kan også oppnås ved å bruke følgende skjema:

    chmod og= filename

    Gi lese, skrive og utføre tillatelse til filens eier, lese tillatelser til filens gruppe og ingen tillatelser til alle andre brukere:

    chmod u=rwx, g=r, o= filename

    Legg til filens eiertillatelser til tillatelsene som medlemmene i filgruppen har:

    chmod g+u filename

    Legg til en klebrig bit i en gitt katalog:

    chmod o+t dirname

Numerisk metode

Syntaksen til chmod kommandoen når du bruker numerisk metode, har følgende format:

chmod NUMBER FILE…

Når du bruker numerisk modus, kan du angi tillatelsene for alle tre brukerklasser (eier, gruppe og alle andre) på samme tid.

NUMBER kan være et 3 eller 4-sifret tall.

Når det brukes 3 siffer, representerer det første sifferet tillatelsene til filens eier, det andre av filens gruppe og det siste alle andre brukere.

Hver skrive-, lese- og utførelsestillatelse har følgende tallverdi:

  • r (les) = 4 w (skriv) = 2 x (kjør) = 1 ingen tillatelser = 0

Tillatelsesnummeret til en spesifikk brukerklasse er representert av summen av verdiene for tillatelsene for den gruppen.

For å finne ut filens tillatelser i numerisk modus, beregn bare summen for alle brukerklasser. For å gi lese, skrive og utføre tillatelse til filens eier, for eksempel å lese og utføre tillatelser til filens gruppe og bare lese tillatelser til alle andre brukere, gjør du følgende:

  • Eier: rwx = 4 + 2 + 1 = 7Gruppe: rx = 4 + 0 + 1 = 5Andre: rx = 4 + 0 + 0 = 4

Ved å bruke metoden over kommer vi opp til tallet 754 , som representerer de ønskede tillatelsene.

For å sette opp setuid , setgid og sticky bit bitflagg bruker du fire sifre.

Når de fire sifrene brukes, har det første sifferet følgende betydning:

  • setuid = 4setgid = 2sticky = 1 ingen endringer = 0

De neste tre sifrene har samme betydning som når du bruker 3 siffer.

Hvis det første sifferet er 0, kan det utelates, og modusen kan representeres med 3 sifre. Den numeriske modusen 0755 er den samme som 755 .

For å beregne numerisk modus kan du også bruke en annen metode (binær metode), men den er litt mer komplisert. Å vite hvordan man beregner numerisk modus ved bruk av 4, 2 og 1 er tilstrekkelig for de fleste brukere.

Du kan sjekke filens tillatelser i den numeriske notasjonen ved å bruke kommandoen stat :

stat -c "%a" filename

644

Her er noen eksempler på hvordan du bruker chmod kommandoen i numerisk modus:

  • Gi filens eier lese- og skrivetillatelser, og bare lese tillatelser til gruppemedlemmer og alle andre brukere:

    chmod 644 dirname

    Gi filens eier lese, skrive og utføre tillatelser, lese og utføre tillatelser til gruppemedlemmer og ingen tillatelser til alle andre brukere:

    chmod 750 dirname

    Gi lese-, skrive- og kjørestillatelser, og en klebrig bit til en gitt katalog:

    chmod 1777 dirname

    Sett rekursivt lese-, skrive- og utførelsestillatelser til fileeieren og ingen tillatelser for alle andre brukere i en gitt katalog:

    chmod -R 700 dirname

Bruker en referansefil

Alternativet --reference=ref_file lar deg stille filens tillatelser til å være de samme som for den spesifiserte referansefilen ( ref_file ).

chmod --reference=REF_FILE FILE

For eksempel vil følgende kommando tilordne tillatelsene til file1 til file2

chmod --reference=file1 file2

Endre rekursivt filens tillatelser

Hvis du vil bruke rekursivt på alle filer og kataloger under den gitte katalogen, bruker du alternativet -R (- --recursive ):

chmod -R MODE DIRECTORY

For å endre tillatelsene for alle filer og underkataloger i katalogen /var/www til 755 , vil du for eksempel bruke:

chmod -R 755 /var/www

Opererer på symbolsk lenker

Symboliske lenker har alltid 777 tillatelser.

Når du endrer tillatelser til symlink, vil chmod som standard endre tillatelsene på filen koblingen viser til.

chmod 755 symlink

Sjansen er stor for at i stedet for å endre målseierskap, vil du få en "ikke tilgang til" symlink ": Tillatelse nektet" -feil.

Feilen oppstår fordi som standard på de fleste Linux-distribusjoner er symlinker beskyttet, og du ikke kan operere på målfiler. Dette alternativet er spesifisert i /proc/sys/fs/protected_symlinks . 1 betyr aktivert og 0 deaktivert. Det anbefales ikke å deaktivere symlinkbeskyttelsen.

Endre filtillatelser i bulk

Noen ganger er det situasjoner der du vil måtte endre filer og katalogtillatelser i bulk.

Det vanligste scenariet er å rekursivt endre nettstedfilens tillatelser til 644 og katalogens tillatelser til 755 .

Ved hjelp av den numeriske metoden:

find /var/www/my_website -type d -exec chmod 755 {} ; find /var/www/my_website -type f -exec chmod 644 {} ;

Ved hjelp av symbolsk metode:

find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ; find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;

/var/www/my_website kommandoen vil søke etter filer og kataloger under /var/www/my_website og /var/www/my_website hver funnet fil og katalog til chmod kommandoen for å angi tillatelser.

Konklusjon

chmod kommandoen endrer filens tillatelser. Tillatelsene kan stilles enten ved symbol- eller numerisk modus.

Hvis du vil lære mer om chmod gå til chmod man-siden.

chmod terminal