EXPLAINED: How to use "chmod" command [COMPLETE GUIDE]
Innholdsfortegnelse:
- Linux-filtillatelser
- Bruker
chmod
- Symbolisk (tekst) metode
- Numerisk metode
- Bruker en referansefil
- Endre rekursivt filens tillatelser
- Opererer på symbolsk lenker
- Endre filtillatelser i bulk
- Konklusjon
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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 medugo
.
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) = 4w
(skriv) = 2x
(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
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:
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.
Måned oktober kan ha vært mer eller mindre dominert av Ubuntu Linux for de som forutser den siste Quantal Quetzal-utgivelsen, men denne uken gjorde Linux Mint-prosjektet en spennende kunngjøring om sin egen.

Spesifikt annonserte Linux Mint-prosjektet på tirsdag at det nå har en nettbutikk komplett med flere PCer som tilbyr Linux Mint forhåndslastet.
Samlingen "Linux Diversity": Ett sett, 10 Linux distros

Hvis du handler for et nytt OS , vil dette settet gi deg et utvalg av de nyeste populære alternativene.
Slik nullstiller du NTFS-filtillatelser i Windows 10/8/7

Tilbakestill NTFS-filtillatelser er et freeware som lar deg enkelt gjenopprett eller tilbakestill fil- og sikkerhetsrettigheter i Windows 10/8/7, uten å bruke kommandolinje.