chmod | |
---|---|
Type | program til at ændre tilladelser for filer og mapper |
Udvikler | GNU projekt |
Skrevet i | C |
Operativ system | Unix-agtig |
Første udgave | 3. november 1971 |
nyeste version | 8,5 (23. april 2010) |
Licens | GPLv3+ |
Internet side | gnu.org |
chmod (fra engelsk change mode ) er en kommando til at ændre fil- og mappetilladelser , der bruges i Unix-lignende operativsystemer . Inkluderet i POSIX -standarden i Coreutils .
Syntaks:
chmod [indstillinger] tilstand[,tilstand] fil1 [fil2 ...]Muligheder:
Kommandoen ændrer aldrig tilladelser på symbolske links ; for hvert symbolsk link, der er angivet på kommandolinjen, ændres dog tilladelserne for den tilknyttede fil. Kommandoen ignorerer symbolske links, der stødes på under rekursiv behandling af mapper.
Tilladelsesargumentet til chmod-kommandoen kan skrives i to formater: numerisk og tegn.
Rettigheder skrives på én linje for tre typer brugere på én gang:
I numerisk form sættes absolutte rettigheder til en fil eller mappe, mens der i symbolsk form kan sættes individuelle rettigheder for forskellige typer brugere.
Eksempel: numerisk, sæt tilladelser til rwxr-xr-x:
chmod 755 filnavn
ejer | Gruppe | hvile | |
---|---|---|---|
oktal værdi | 7 | 5 | 5 |
tegnnotation | rwx | rx | rx |
brugertypebetegnelse | u | g | o |
Således er rettighederne "755" skrevet i symbolsk form som "rwxr-xr-x". På samme tid, for at forstå essensen af at indstille rettigheder i Unix-systemer, er det nyttigt at kende repræsentationen af tal i det binære talsystem .
binær | oktal | symbolsk | filtilladelser | biblioteksrettigheder |
---|---|---|---|---|
000 | 0 | --- | Ingen | Ingen |
001 | en | --x | ydeevne | læse fil egenskaber |
010 | 2 | -w- | optage | Ingen |
011 | 3 | -wx | optagelse og udførelse | alt undtagen at få filnavne |
100 | fire | r-- | læsning | læse filnavne |
101 | 5 | rx | læsning og udførelse | læseadgang til filer/deres egenskaber |
110 | 6 | rw- | Læs og skriv | læse filnavne |
111 | 7 | rwx | alle rettigheder | alle rettigheder |
Nogle tilladelser giver kun mening i kombination med andre. Af de første fire punkter (som ikke giver ret til at læse filen), bruges normalt kun "---" til filer, det vil sige en fuldstændig nægtelse af adgang til filen for denne type bruger. For mapper fra hele listen bruges normalt kun 0, 5 og 7 - nægt, læs og udfør og fuld adgang.
Ved at summere disse koder for tre typer brugere kan du få en numerisk eller symbolsk indtastning. For eksempel, chmod 444 {filnavn} : 400+40+4=444 - alle har skrivebeskyttet adgang (identisk med "r--r--r--").
Ud over standard 'rwx'-tilladelserne, styrer chmod-kommandoen også SGID-, SUID- og T-bits. Hvis SUID- eller SGID-attributterne er indstillet, kan filen køres med henholdsvis filejer- eller gruppetilladelser.
For SUID er vægten 4000, og for SGID er den 2000. Disse attributter er meningsfulde, når den tilsvarende udførelsesbit er sat og er angivet med bogstavet "s" i symbolsk notation: "rw s rwxrwx" og "rwxrw s rwx ", henholdsvis.
Eksempel: chmod 4555 {filnavn} - alle har ret til at læse og udføre, men filen vil blive lanceret til eksekvering med ejerrettigheder.
Indstilling af SGID for en mappe vil få hver ny fil, der oprettes, til at tilhøre den samme gruppe som selve mappen, snarere end ejerens primære gruppe, som det sker som standard. SUID for en mappe er meningsløs [1] .
sticky bit eller begrænset sletningsflag (t-bit) bruges kun med mapper. Når t-bit for en mappe ikke er indstillet, kan en fil i den mappe slettes (omdøbes) af enhver bruger med skriveadgang til den mappe. Ved at sætte t-bit på en mappe, ændrer vi denne regel på en sådan måde, at kun ejeren af denne fil kan slette (omdøbe) en fil. Efter kodningen ovenfor har t-bit en vægt på 1000.
Bemærk: Skrive (w) tilladelse giver brugeren mulighed for at skrive eller ændre en fil, mens mappe skrive tilladelse giver mulighed for at oprette nye filer eller slette filer fra den mappe. Hvis en mappe er skrivbar (w), så kan en fil i den mappe slettes, selvom filen ikke har nogen skrivetilladelse . (Ifølge POSIX-filsystemkonceptet).
I symbolsk form giver brug af kommandoen dig mulighed for mere fleksibelt at tilføje, indstille eller fjerne tilladelser på filer eller mapper:
$ chmod [referencer][operatør][modes] fil ...Referencer definerer de brugere, hvis rettigheder vil blive ændret. Referencer er defineret med et eller flere bogstaver:
reference | klasse | Beskrivelse |
---|---|---|
u | bruger | Filejer |
g | gruppe | Brugere i filejergruppen |
o | andre | Andre brugere |
-en | alle | Alle brugere (eller ugo) |
Operatør definerer den operation, som chmod vil udføre:
operatør | Beskrivelse |
---|---|
+ | tilføje visse tilladelser |
- | fjerne visse rettigheder |
= | indstille visse tilladelser |
Tilstande definerer, hvilke tilladelser der vil blive indstillet, tilføjet eller fjernet:
mode | Navn | Beskrivelse |
---|---|---|
r | Læs | læsning af en fil eller mappeindhold |
w | skrive | skrivning til en fil eller mappe |
x | udføre | eksekvere en fil eller læse indholdet af en mappe |
x | særlig udføre | udfør, hvis filen er en mappe eller allerede har udførelsestilladelse for en bruger |
s | setuid/gid | de indstillede attributter SUID eller SGID giver dig mulighed for at køre filen til eksekvering med rettighederne for henholdsvis filejeren eller gruppen |
t | klæbrig | ved at sætte t-bit på en mappe, ændrer vi denne regel på en sådan måde, at kun ejeren af denne fil kan slette en fil |
Indstil tilladelser "rwxr-xr-x" (0755) for en fil:
chmod u=rwx,g=rx,o=rx filnavnIndstil udførelsestilladelser for filejeren, fjern udførelsestilladelser fra gruppen, fjern skrive- og udførelsestilladelser fra andre brugere:
chmod u+x,gx,o-wx filnavnIndstil rekursivt læsetilladelser for alle brugere:
chmod -R a+r bibliotekFjern rekursivt SUID- og SGID-attributterne:
chmod -R us,gs bibliotekStandardværdierne er:
Værdierne er forskellige for filer og mapper, fordi "execute"-flaget påvirker filer og mapper forskelligt. For eksekverbare filer betyder "execute" at køre dem, for mapper, retten til at læse filen (hvis der er en læserettighed på den) og dens filattributter med et kendt navn (uden ret til at læse, kan du ikke få navnet på filerne i mappen).
Følgende kommando vil rekursivt anvende regler på alle filer i mappen "/home/test" såvel som på alle filer i alle undermapper:
# find /home/test -type f -exec chmod 644 {} \;Følgende kommando vil rekursivt anvende regler på alle mapper i mappen "/home/test" såvel som på alle mapper i alle undermapper:
# find /home/test -type d -exec chmod 755 {} \;Du kan opnå det samme resultat uden at bruge find (bemærk det store X):
# chmod -R go=rX,u=rwX /home/testUnix-kommandoer | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|