chmod - chmod

chmod
Originale forfattere AT&T Bell Laboratories
Utvikler (er) Ulike åpen kildekode og kommersielle utviklere
Første utgivelse 3. november 1971 ; 49 år siden ( 1971-11-03 )
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:

  • -R Rekursiv, dvs. inkludere objekter i underkataloger.
  • -v verbose, 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(henholdsvis 2), (trekker du ingenting og) konkluderer med at skriving er tillatt.
  • Hvis den numeriske verdien er 7(henholdsvis 3), trekker du deretter 1 for å få 6(henholdsvis 2) og konkluderer med at skriving er tillatt.
  • Hvis verdien var 4(henholdsvis 0), (trekker du ingenting og) konkluderer med at skriving ikke er tillatt.
  • Hvis verdien var 5(henholdsvis 1), så trekk 1 for å få 4(henholdsvis 0) 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å

Referanser

Eksterne linker