chmod - chmod
| Originale forfattere | AT&T Bell Laboratories |
|---|---|
| Utvikler (er) | Ulike åpen kildekode og kommersielle utviklere |
| Første utgivelse | 3. november 1971 |
| Operativsystem | Unix , Unix-lignende , Plan 9 , Inferno , IBM i |
| Plattform | Kryssplattform |
| Type | Kommando |
| Tillatelse | coreutils : GPLv3 |
I Unix og Unix-lignende operativsystemer , chmod er kommando og systemkall brukes til å endre tilgangsrettigheter til filsystemet objekter ( filer og kataloger ) noen ganger kalt moduser . Det brukes også til å endre spesialmodusflagg, for eksempel setuid- og setgid -flagg og en "klebrig" bit . Forespørselen filtreres av umask . Navnet er en forkortelse av endringsmodus . De vises når du viser filer i langt format.
Historie
En chmod -kommando dukket først opp i AT&T Unix versjon 1.
Etter hvert som systemer vokste i antall og typer brukere, ble tilgangskontrollister lagt til i mange filsystemer i tillegg til disse mest grunnleggende modusene for å øke fleksibiliteten.
Versjonen av chmod samlet i GNU coreutils ble skrevet av David MacKenzie og Jim Meyering.
Kommandoen chmod har også blitt portet til operativsystemet IBM i .
Kommandosyntaks
Gjennom denne delen refererer u ser til eieren av filen, som en påminnelse om at den symbolske formen for kommandoen bruker " u ".
chmod [options] mode[,mode] file1 [file2 ...]
Vanligvis implementerte alternativer inkluderer:
-
-RRekursiv, dvs. inkludere objekter i underkataloger. -
-vverbose, vis objekter endret (uendrede objekter vises ikke).
Hvis en symbolsk lenke er angitt, påvirkes målobjektet. Filmoduser som er direkte knyttet til symbolske lenker i seg selv, brukes vanligvis ikke.
For å vise filmodus kan kommandoene lseller statbrukes:
$ ls -l findPhoneNumbers.sh
-rwxr-xr-- 1 dgerman staff 823 Dec 16 15:03 findPhoneNumbers.sh
$ stat -c %a findPhoneNumbers.sh
754
Den r, wog xspesifiser lese-, skrive- og kjøre -tilgangen (det første tegnet på ls -displayet angir objekttypen; en bindestrek representerer en ren fil). Skriptet findPhoneNumbers.sh kan leses, skrives til og kjøres av brukeren dgerman ; lest og henrettet av medlemmer av personalgruppen ; og bare lest av andre brukere.
Hoveddelene i chmod -tillatelsene:
For eksempel: rwxr-x---
Hver gruppe på tre tegn definerer tillatelser for hver klasse :
- de tre lengst til venstre tegn
rwx, definere tillatelser for bruker klasse (dvs. filen eier). - de tre midterste karakterene,
r-xdefinere tillatelser for konsernet klasse (dvs. gruppen som eier filen) - de tre høyre tegnene
---, definerer tillatelser for klassen Andre . I dette eksemplet har brukere som ikke er eieren av filen og som ikke er medlemmer av gruppen (og dermed er i klassen Andre ) ingen tillatelse til å få tilgang til filen.
Numeriske tillatelser
Det numeriske formatet chmod godtar opptil fire sifre. De tre tallene til høyre definerer tillatelser for filbrukeren, gruppen og andre. Det valgfrie ledende sifferet, når fire sifre er gitt, spesifiserer det spesielle setuid- , setgid- og klebrig flagget. Hvert siffer i de tre sifferene til høyre representerer en binær verdi, som styrer henholdsvis "lese", "skrive" og "utføre" tillatelser. En verdi på 1 betyr at en klasse er tillatt denne handlingen, mens en 0 betyr at den ikke er tillatt.
| # | Sum | rwx | Tillatelse |
|---|---|---|---|
7
|
4 (r) + 2 (w) + 1 (x) |
rwx
|
lese, skrive og utføre |
6
|
4 (r) + 2 (w) |
rw-
|
lese og skrive |
5
|
4 (r) + 1 (x) |
r-x
|
lese og utføre |
4
|
4 (r) |
r--
|
skrivebeskyttet |
3
|
2 (w) + 1 (x) |
-wx
|
skrive og utføre |
2
|
2 (w) |
-w-
|
bare skrive |
1
|
1 (x) |
--x
|
bare utføre |
0
|
0 |
---
|
ingen |
For eksempel 754vil tillate:
- "les" (4), "skriv" (2) og "kjør" (1) for brukerklassen , dvs. 7 (4+2+1).
- "lese" (4) og "kjøre" (1) for konsernet klassen dvs. 5 (4 + 1).
- Bare "les" (4) for Andre -klassen.
En numerisk kode tillater utførelse hvis og bare hvis det er oddetall (dvs. 1, 3, 5, eller 7). Mens en numerisk kode tillater "lese" hvis og bare hvis den er større enn, eller lik 4, betyr dette 4, 5, 6, eller 7).
For å avgjøre om "skrive" er tillatt, trekker du 1 fra den numeriske verdien hvis den er odd (og trekker ingenting hvis den er jevn); så er "skrive" tillatt hvis og bare hvis dette resulterende tallet er 2eller 6. For eksempel:
- Hvis verdien var
6(henholdsvis2), (trekker du ingenting og) konkluderer med at skriving er tillatt. - Hvis den numeriske verdien er
7(henholdsvis3), trekker du deretter 1 for å få6(henholdsvis2) og konkluderer med at skriving er tillatt. - Hvis verdien var
4(henholdsvis0), (trekker du ingenting og) konkluderer med at skriving ikke er tillatt. - Hvis verdien var
5(henholdsvis1), så trekk 1 for å få4(henholdsvis0) og konkluder med at det igjen ikke er tillatt å skrive.
Numerisk eksempel
Endre tillatelser for å tillate medlemmer av programmerergruppen å oppdatere en fil:
$ ls -l sharedFile
-rw-r--r-- 1 jsmith programmers 57 Jul 3 10:13 sharedFile
$ chmod 664 sharedFile
$ ls -l sharedFile
-rw-rw-r-- 1 jsmith programmers 57 Jul 3 10:13 sharedFile
Siden setuid , setgid og sticky bits ikke er spesifisert, tilsvarer dette:
$ chmod 0664 sharedFile
Symboliske moduser
Den chmod kommandoen godtar også en mer finkornet symbolsk betegnelse, som gjør det mulig å modifisere spesifikke modi samtidig la andre modi urørt. Den symbolske modusen består av tre komponenter, som er kombinert for å danne en enkelt tekststreng:
$ chmod [references][operator][modes] file ...
Klasser av brukere brukes til å skille hvem tillatelsene gjelder for. Hvis ingen klasser er spesifisert, er "alt" underforstått. Klassene er representert med en eller flere av følgende bokstaver:
| Henvisning | Klasse | Beskrivelse |
|---|---|---|
| u | bruker | fileier |
| g | gruppe | medlemmer av filens gruppe |
| o | andre | brukere som verken er filens eier eller medlemmer av filgruppen |
| en | alle | alle tre av de ovennevnte, samme som ugo
|
Den chmod Programmet bruker en operatør å spesifisere hvordan moduser av en fil bør justeres. Følgende operatører godtas:
| Operatør | Beskrivelse |
|---|---|
| + | legger til de angitte modusene til de angitte klassene |
| - | fjerner de angitte modusene fra de angitte klassene |
| = | de angitte modusene skal gjøres til de eksakte modusene for de spesifiserte klassene |
Modusene indikerer hvilke tillatelser som skal gis eller fjernes fra de angitte klassene. Det er tre grunnleggende moduser som tilsvarer de grunnleggende tillatelsene:
| Modus | Navn | Beskrivelse |
|---|---|---|
| r | lese | r ead en fil eller vise innholdet i en katalog |
| w | skrive | w rite til en fil eller katalog |
| x | henrette | e x ecute en fil eller resurse et katalogtre |
| X | spesiell utførelse | som ikke er en tillatelse i seg selv, men som kan brukes i stedet for x . Den bruker kjøringstillatelser for kataloger uavhengig av deres nåværende tillatelser og bruker kjøringstillatelser for en fil som allerede har minst én kjøretillatelsesbit allerede angitt (enten bruker , gruppe eller andre ). Det er bare veldig nyttig når det brukes med +og vanligvis i kombinasjon med -Rflagget for å gi Group eller Andre tilgang til et stort katalogtre uten å angi tillatelse til normale filer (for eksempel tekstfiler), noe som normalt ville skje hvis du bare brukte chmod -R a+rx ., mens med X kan du gjøre i chmod -R a+rX .stedet
|
| s | setuid/gid | detaljer i delen Spesielle moduser |
| t | klissete | detaljer i delen Spesielle moduser |
Flere endringer kan spesifiseres ved å skille flere symbolske moduser med kommaer (uten mellomrom). Hvis en bruker ikke er spesifisert, chmodvil den kontrollere omask og effekten vil være som om " a " ble spesifisert bortsett fra at biter som er angitt i omasken ikke påvirkes.
Symboliske eksempler
- Legg til skrivetillatelse ( w ) til gruppens ( g ) tilgangsmoduser for en katalog, slik at brukere i samme gruppe kan legge til filer:
$ ls -ld shared_dir # show access modes before chmod
drwxr-xr-x 2 jsmitt northregion 96 Apr 8 12:53 shared_dir
$ chmod g+w shared_dir
$ ls -ld shared_dir # show access modes after chmod
drwxrwxr-x 2 nfinny eastregion 96 Apr 8 12:53 shared_dir
- Fjern skrivetillatelser ( w ) for alle klasser ( a ), slik at ingen kan skrive til filen:
$ ls -l ourBestReferenceFile
-rw-rw-r-- 2 tmiller northregion 96 Apr 8 12:53 ourBestReferenceFile
$ chmod a-w ourBestReferenceFile
$ ls -l ourBestReferenceFile
-r--r--r-- 2 ebowman northregion 96 Apr 8 12:53 ourBestReferenceFile
- Sett tillatelsene for u ser og konsernet ( ug ) å lese og utføre ( rx ) bare (ingen skrivetilgang) på referenceLib , hindrer noen å legge til filer.
$ ls -ld referenceLib
drwxr----- 2 ebowman northregion 96 Apr 8 12:53 referenceLib
$ chmod ug=rx referenceLib
$ ls -ld referenceLib
dr-xr-x--- 2 dhinkle northregion 96 Apr 8 12:53 referenceLib
- Legg til lese- og skrivetillatelsene til bruker- og gruppeklassene i en fil eller katalog som heter sample :
$ chmod ug+rw sample
$ ls -ld sample
drw-rw---- 2 rsanchez budget 96 Dec 8 12:53 sample
- Endre tillatelsene for brukeren og gruppen til å lese og utføre bare (ingen skrivetillatelse) på prøven .
$ # Sample file permissions before command
$ ls -ld sample
drw-rw---- 2 oschultz warehousing 96 Dec 8 12:53 NY_DBs
$ chmod ug=rx sample
$ ls -ld sample
dr-xr-x--- 2 aolensky warehousing 96 Dec 8 12:53 NJ_DBs
Spesielle moduser
Den chmod kommandoen er også i stand til å endre ytterligere tillatelser eller spesielle moduser av en fil eller katalog. De symbolske modusene bruker ' s ' for å representere setuid- og setgid -modusene, og ' t ' for å representere den klebrige modusen. Modusene brukes bare på de aktuelle klassene, uavhengig av om andre klasser er spesifisert eller ikke.
De fleste operativsystemer støtter spesifikasjonen av spesielle moduser som bruker oktalmoduser, men noen gjør det ikke. På disse systemene kan bare de symbolske modusene brukes.
Kommandolinjeeksempler
| Kommando | Forklaring |
|---|---|
chmod a+r publicComments.txt |
legger lese tillatelse for alle klasser (dvs. u ser , Gruppe og Andre ) |
chmod a-x publicComments.txt |
fjerner kjøringstillatelse for alle klasser |
chmod a+rx viewer.sh |
legger til lese- og kjøringstillatelser for alle klasser |
chmod u=rw,g=r,o= internalPlan.txt |
sett lese og skrivetilgang til u ser , sett lese for konsernet , og nekter tilgang til Andre |
chmod -R u+w,go-w docs |
legger skrivetilgang til katalogen docs og alt innholdet (dvs. R ecursively) for eieren, og fjerner skrivetilgang for konsernet og andre |
chmod ug=rw groupAgreements.txt |
sett lese og skriverettigheter for u ser og konsernet |
chmod 664 global.txt |
sett lese og skriverettigheter for u ser og konsernet , og lar deg lese til Andre . |
chmod 744 Show_myCV.sh |
sett lese, skrive og utføre tillatelser for u ser , og angir lesetillatelser for konsernet og Andre |
chmod 1755 findReslts.sh |
setter klebrig bit, setter lese, skrive og kjøre tillatelser for eier, og angir lese og utføre tillatelser for gruppe og andre (dette antyder at skriptet beholdes i minnet) |
chmod 4755 setCtrls.sh |
sett UID , sett lese, skrive og utføre tillatelser for u ser , og sett lese og utføre tillatelser for konsernet og Andre |
chmod 2755 setCtrls.sh |
setter GID , sett lese, skrive og utføre tillatelser for u ser , og sett lese- og kjørerettigheter for konsernet og Andre |
chmod -R u+rwX,g-rwx,o-rx personalStuff |
R ecursively (dvs på alle filer og kataloger i personalStuff ) Legger lese, skrive, og spesielle gjennomføring tillatelser for u ser , fjerner lese, skrive og gjennomføring tillatelser for konsernet , og fjerner lese og gjennomføring tillatelser for Annet |
chmod -R a-x+X publicDocs |
R økurs (dvs. på alle filer og kataloger i publicDocs ) fjerner kjøringstillatelse for alle klasser og legger til spesiell kjøringstillatelse for alle klasser |
Se også
- Tillatelser for filsystem
-
chattr, kommandoen som brukes til å endre attributtene til en fil eller katalog på Linux -systemer -
chown, kommandoen som brukes til å endre eieren av en fil eller katalog på Unix-lignende systemer -
chgrp, kommandoen som brukes til å endre gruppen til en fil eller katalog på Unix-lignende systemer -
cacls, en kommando som brukes på Windows NT og dets derivater for å endre tilgangskontrollistene knyttet til en fil eller katalog attrib-
umask, begrenser modus (tillatelser) ved oppretting av filer eller kataloger på Unix-lignende systemer - Brukeridentifikator
- Gruppeidentifikator
- Liste over Unix -kommandoer
Referanser
Eksterne linker
- : endre filmoduser - FreeBSD General Commands Manual
- - Plan 9 Programmerings Manual, Volume 1
- - Inferno Generelle kommandoer Manuell
-
chmod- manuell side fra GNU coreutils . - GNU "Setting Permissions" -manual
- CHMOD-Win 3.0 -Freeware Windows 'ACL ↔ CHMOD-omformer.
- Nybegynneropplæring med online "live" eksempel