Android

Chmod-kommando i linux (filtilladelser)

Linux Terminal und Bash Grundlagen Teil 5 - Benutzer, Gruppen und Dateirechte

Linux Terminal und Bash Grundlagen Teil 5 - Benutzer, Gruppen und Dateirechte

Indholdsfortegnelse:

Anonim

I Linux styres adgang til filerne gennem filtilladelser, attributter og ejerskab. Dette sikrer, at kun autoriserede brugere og processer har adgang til filer og mapper.

Denne tutorial dækker hvordan man bruger chmod kommandoen til at ændre adgangstilladelser for filer og mapper.

Linux-filtilladelser

Inden vi går videre, lad os forklare den grundlæggende Linux-tilladelsesmodel.

I Linux er hver fil tilknyttet en ejer og en gruppe og tildelt tilladelsesadgangsrettigheder for tre forskellige klasser af brugere:

  • Fileejeren. Gruppemedlemmerne. Andre (alle andre).

chgrp kan ændres vha. chgrp og chgrp kommandoer.

Der er tre filtilladelsestyper, der gælder for hver klasse:

  • Læs tilladelse. Skrivetilladelse. Udfør tilladelse.

Dette koncept giver dig mulighed for at specificere, hvilke brugere der har tilladelse til at læse filen, skrive til filen eller køre filen.

Filtilladelser kan vises ved hjælp af 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 tegn viser filtypen. Det kan være en almindelig fil ( - ), bibliotek ( d ), et symbolsk link ( l ) eller enhver anden speciel filtype.

De næste ni tegn repræsenterer filtilladelser, tre tripletter på tre tegn hver. Den første triplet viser ejertilladelser, den anden gruppe tilladelser, og den sidste triplet viser alle andre tilladelser. Tilladelser kan have en anden betydning afhængigt af filtypen.

I eksemplet ovenfor ( rw-r--r-- ) betyder det, at rw-r--r-- har læse- og skrivetilladelser ( rw- ), gruppen og andre har kun læsetilladelser ( r-- ).

Hver af de tre tilladelsestripletter kan konstrueres af følgende tegn og har forskellige effekter, afhængigt af om de er indstillet til en fil eller til et bibliotek:

Effekten af ​​tilladelser på filer

Tilladelse Karakter Betydning på fil
Læs - Filen kan ikke læses. Du kan ikke se filindholdet.
r Filen kan læses.
Skrive - Filen kan ikke ændres eller ændres.
w Filen kan ændres eller ændres.
Udfør - Filen kan ikke udføres.
x Filen kan udføres.
s Hvis den findes i user indstiller den setuid bit. Hvis den findes i group , indstiller den setgid bit. Det betyder også, at x flag er indstillet.

Når setuid eller setgid flagene er indstillet på en eksekverbar fil, udføres filen med filens ejer og / eller gruppeprivilegier.

S Samme som s men x flag er ikke indstillet. Dette flag bruges sjældent på filer.
t Hvis den findes i den others triplet, sætter den den sticky bit.

Det betyder også, at x flag er indstillet. Dette flag er nytteløst i filer.

T Det samme som t men x flaget er ikke indstillet. Dette flag er nytteløst i filer.

Effekten af ​​tilladelser på mapper (mapper)

I Linux er mapper specielle typer filer, der indeholder andre filer og mapper.

Tilladelse Karakter Betydning på katalog
Læs - Katalogets indhold kan ikke vises.
r Katalogets indhold kan vises.

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

Skrive - Katalogets indhold kan ikke ændres.
w Katalogets indhold kan ændres.

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

Udfør - Kataloget kan ikke ændres til.
x Kataloget kan navigeres ved hjælp af cd .
s Hvis den findes i user , indstiller den setuid bit. Hvis den findes i group indstiller den setgid bit. Det betyder også, at x flag er indstillet. Når setgid flaget er indstillet på et bibliotek, arver de nye filer, der er oprettet i det, kataloggruppe-ID (GID) i stedet for den primære gruppe-ID for den bruger, der oprettede filen.

setuid har ingen indflydelse på mapper.

S Samme som s men x flag er ikke indstillet. Dette flag er ubrugeligt i mapper.
t Hvis den findes i den others triplet, sætter den den sticky bit.

Det betyder også, at x flag er indstillet. Når den klistrede bit er indstillet på et bibliotek, er det kun filens ejer, katalogets ejer eller administrative bruger, der kan slette eller omdøbe filerne i kataloget.

T Det samme som t men x flaget er ikke indstillet. Dette flag er ubrugeligt i mapper.

Brug af chmod

chmod kommandoen har følgende generelle form:

chmod MODE FILE…

Med chmod kommandoen kan du ændre tilladelserne på en fil ved hjælp af enten en symbolisk eller numerisk tilstand eller en referencefil. Vi vil forklare tilstande mere detaljeret senere. Kommandoen kan acceptere en eller flere filer og / eller mapper adskilt med mellemrum som argumenter.

Kun root, filejer eller bruger med sudo-privilegier kan ændre tilladelser for en fil. Vær ekstra forsigtig, når du bruger chmod , især når du rekursivt ændrer tilladelserne.

Symbolisk (tekst) metode

Syntaks for kommando chmod når du bruger symboltilstand, har følgende format:

chmod perms… FILE…

Det første sæt af flag ( ), brugeres flag, definerer hvilke brugere, der klassificerer tilladelserne til filen, der ændres.

  • u - Filsejeren. g - Brugere, der er medlemmer af gruppen. o - Alle andre brugere. a - Alle brugere, identiske med ugo .

Hvis brugerflagget udelades, er standardindstillingen a og tilladelserne, der er indstillet af umask, påvirkes ikke.

Det andet sæt flag ( ), opererer flagene, definerer, om tilladelserne skal fjernes, tilføjes eller indstilles:

  • - Fjerner de specificerede tilladelser. + Tilføjer specificerede tilladelser. = Ændrer de nuværende tilladelser til de specificerede tilladelser. Hvis der ikke er angivet nogen tilladelser efter symbolet = , fjernes alle tilladelser fra den specificerede brugerklasse.

Tilladelserne ( perms… ) kan eksplicit indstilles ved hjælp af enten nul eller en eller flere af følgende bogstaver: r , w , x , X , s og t . Brug et enkelt bogstav fra sættet u , g og o når du kopierer tilladelser fra en til en anden brugerklasse.

Når du indstiller tilladelser for mere end en brugerklasse ( ), brug kommaer (uden mellemrum) til at adskille de symboliske tilstande.

Herunder er nogle eksempler på, hvordan du bruger chmod kommandoen i symboltilstand:

  • Giv gruppens medlemmer tilladelse til at læse filen, men ikke at skrive og udføre den:

    chmod g=r filename

    Fjern udførelsestilladelsen for alle brugere:

    chmod ax filename

    Fjern afvisende skrivetilladelse for andre brugere:

    chmod -R ow dirname

    Fjern læse, skrive og udføre tilladelse for alle brugere undtagen filens ejer:

    chmod og-rwx filename

    Den samme ting kan også opnås ved at bruge følgende formular:

    chmod og= filename

    Giv læse, skriv og udfør tilladelse til filens ejer, læs tilladelser til filens gruppe og ingen tilladelser til alle andre brugere:

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

    Føj filens ejertilladelser til de tilladelser, som medlemmerne af filgruppen har:

    chmod g+u filename

    Føj en klistret bit til et givet bibliotek:

    chmod o+t dirname

Numerisk metode

Syntaks for chmod når du bruger en numerisk metode, har følgende format:

chmod NUMBER FILE…

Når du bruger den numeriske tilstand, kan du indstille tilladelserne for alle tre brugerklasser (ejer, gruppe og alle andre) på samme tid.

NUMBER kan være et 3 eller 4-cifret tal.

Når der bruges 3 cifret nummer, repræsenterer det første ciffer tilladelser for filens ejer, det andet i filgruppen og det sidste alle andre brugere.

Hver skrivning, læse og udførelse af tilladelser har følgende talværdi:

  • r (læst) = 4 w (skriv) = 2 x (udfør) = 1 ingen tilladelser = 0

Permissionsnummeret for en bestemt brugerklasse er repræsenteret af summen af ​​værdierne for tilladelserne for den gruppe.

For at finde ud af filens tilladelser i numerisk tilstand beregner du blot totalerne for alle brugerklasser. For eksempel at give læse, skrive og udføre tilladelse til filens ejer, læse og udføre tilladelser til filens gruppe og kun læse tilladelser til alle andre brugere, ville du gøre følgende:

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

Ved hjælp af ovenstående metode kommer vi op på tallet 754 , der repræsenterer de ønskede tilladelser.

Brug fire firecifre til at opsætte setuid , setgid og sticky bit flag.

Når det 4-cifrede nummer bruges, har det første ciffer følgende betydning:

  • setuid = 4setgid = 2sticky = 1 ingen ændringer = 0

De næste tre cifre har den samme betydning som ved brug af 3 cifret tal.

Hvis det første ciffer er 0, kan det udelades, og tilstanden kan repræsenteres med 3 cifre. Den numeriske tilstand 0755 er den samme som 755 .

For at beregne den numeriske tilstand kan du også bruge en anden metode (binær metode), men den er lidt mere kompliceret. At vide, hvordan man beregner den numeriske tilstand ved hjælp af 4, 2 og 1, er tilstrækkelig for de fleste brugere.

Du kan kontrollere filens tilladelser i den numeriske notation ved hjælp af kommandoen stat :

stat -c "%a" filename

644

Her er nogle eksempler på, hvordan du bruger chmod kommandoen i numerisk tilstand:

  • Giv filens ejer læse- og skrivetilladelser og læs kun tilladelser til gruppemedlemmer og alle andre brugere:

    chmod 644 dirname

    Giv filens ejer læse, skrive og udføre tilladelser, læse og udføre tilladelser til gruppemedlemmer og ingen tilladelser til alle andre brugere:

    chmod 750 dirname

    Giv læse, skrive og udføre tilladelser og en klistret bit til et givet bibliotek:

    chmod 1777 dirname

    Sæt rekursivt læse-, skrive- og udførelsestilladelser til fileejeren og ingen tilladelser for alle andre brugere i en given mappe:

    chmod -R 700 dirname

Brug af en referencefil

Indstillingen --reference=ref_file giver dig mulighed for at indstille filens tilladelser til at være de samme som for den specificerede referencefil ( ref_file ).

chmod --reference=REF_FILE FILE

For eksempel tildeler følgende kommando tilladelserne til file1 til file2

chmod --reference=file1 file2

Ændre filens tilladelser rekursivt

Hvis du vil rekursivt betjene alle filer og mapper under det givne bibliotek, skal du bruge indstillingen -R (- --recursive ):

chmod -R MODE DIRECTORY

For eksempel at ændre tilladelserne for alle filer og undermapper under mappen /var/www til 755 , ville du bruge:

chmod -R 755 /var/www

Arbejder med symboliske links

Symboliske links har altid 777 tilladelser.

Ved ændring af symlink's tilladelser ændrer chmod som standard tilladelserne på filen, som linket peger på.

chmod 755 symlink

Chancerne er store, at i stedet for at ændre måleejerskabet, får du en "ikke adgang til" symlink ": tilladelse afvist" -fejl.

Fejlen opstår, fordi som standard på de fleste Linux-distributioner er symlink beskyttet, og du kan ikke operere på målfiler. Denne indstilling er specificeret i /proc/sys/fs/protected_symlinks . 1 betyder aktiveret og 0 deaktiveret. Det anbefales ikke at deaktivere symlinkbeskyttelsen.

Ændring af filtilladelser i bulk

Nogle gange er der situationer, hvor du bliver nødt til at bulk ændre filer og mapper tilladelser.

Det mest almindelige scenarie er at rekursivt ændre webstedsfilens tilladelser til 644 og katalogets tilladelser til 755 .

Ved hjælp af den numeriske metode:

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

Ved hjælp af den symboliske 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 {} ;

find kommandoen vil søge efter filer og mapper under /var/www/my_website og videregive hver fundne fil og mappe til chmod kommandoen for at indstille tilladelserne.

Konklusion

chmod kommandoen ændrer filens tilladelser. Tilladelserne kan indstilles ved hjælp af symbolsk eller numerisk tilstand.

For at lære mere om chmod besøge siden chmod man.

chmod terminal