Hva er oktale og symbolske chmod-moduser?

chmod angir tillatelsene til en fil på Linux, macOS og andre Unix-systemer, og godtar dem i to notasjoner. En oktal modus som 755 har ett siffer for eieren, gruppen og alle andre, der lesing er 4, skriving er 2 og kjøring er 1. En symbolsk modus som u=rwx,g=rx,o=rx angir i stedet klassene (u eier, g gruppe, o andre, a alle) og tillatelsene (r, w, x).

Symbolske moduser kan også endre tillatelser i stedet for å angi alle: u+x legger til kjøring for eieren, go-w fjerner skrivetilgang for gruppen og andre, og g=u kopierer eierens tillatelser til gruppen. En oktal modus angir alltid alle tillatelser, så det oktale resultatet av en endring avhenger av hvilken modus filen hadde fra før.

Verktøybeskrivelse

Dette verktøyet konverterer chmod-moduser mellom oktal og symbolsk notasjon. Velg kilde- og målnotasjon, eller la kilden stå på automatisk gjenkjenning: skriv inn 755 for å få u=rwx,g=rx,o=rx, eller skriv inn en symbolsk modus for å få den oktale verdien. For endringer som u+x eller a+X skriver du inn filens nåværende modus og ser modusen chmod vil ende opp med. Du kan også lime inn en tillatelsesstreng fra ls -l, for eksempel -rwxr-xr-x, eller en hel chmod-kommando.

Eksempler

Oktal Symbolsk ls -l Typisk bruk
644 u=rw,go=r -rw-r--r-- Vanlige filer
755 u=rwx,go=rx -rwxr-xr-x Skript, programmer og kataloger
600 u=rw,go= -rw------- Private filer, for eksempel SSH-nøkler
2775 u=rwx,g=rwxs,o=rx drwxrwsr-x Delte kataloger som beholder gruppen sin
1777 a=rwx,+t drwxrwxrwt /tmp og andre delte arbeidskataloger
4755 u=rwxs,go=rx -rwsr-xr-x Programmer som passwd

Funksjoner

  • Konverterer oktal til symbolsk og symbolsk til oktal, med en bytteknapp for å endre retning
  • Gjenkjenner notasjonen til modusen du skriver inn, eller konverterer fra notasjonen du velger
  • Bruker relative endringer som u+x, go-w, a=r,u+w, g=u og a+X på en nåværende modus
  • Håndterer setuid, setgid og sticky bit (s, t og oktale moduser med 4 sifre)
  • Skriver den symbolske modusen i full form (u=rwx,g=rx,o=rx) eller kompakt form (u=rwx,go=rx)
  • Leser og skriver ls -l-tillatelsesstrenger, inkludert s, S, t og T
  • Godtar innlimte kommandoer som sudo chmod -R 755 dir
  • Angir nøyaktig hvilket tegn som er problemet når en modus er ugyldig

Slik fungerer det

En oktal modus leses som opptil fire sifre: Det valgfrie første sifferet inneholder setuid (4), setgid (2) og sticky bit (1), mens de tre andre inneholder tillatelsene for eieren, gruppen og andre. En symbolsk modus leses ledd for ledd i henhold til POSIX-grammatikken og brukes på den nåværende modusen slik GNU chmod på Linux gjør:

  • + legger til tillatelser, - fjerner dem, og = angir dem og fjerner resten for de angitte klassene.
  • X legger bare til kjøring for kataloger og filer som allerede har kjøring for noen.
  • s angir setuid med u og setgid med g. t angir sticky bit med o, a eller uten klasse.
  • Uten en klasse, som i +x, gjelder endringen for alle, bortsett fra bitene som blokkeres av umask.
  • For kataloger forblir setuid og setgid uendret med mindre modusen angir dem, som i g-s.

Den symbolske utdataen angir hver bit eksplisitt, slik at den gir samme resultat på en fil uansett hvilken modus filen hadde fra før. Sticky bit skrives som et separat +t-ledd fordi både GNU og BSD chmod godtar den i denne formen.

Tips

  • Bruk a+X med chmod -R for å gjøre kataloger søkbare uten å gjøre alle filer kjørbare.
  • chmod 755 på en katalog fjerner ikke setgid med GNU chmod. Bruk chmod 00755 eller g-s for å fjerne det.
  • Ansible og mange konfigurasjonsfiler forventer en innledende null, som i 0755. Slå på «Vis alltid 4 oktale sifre» for å få dette.
  • Et . eller + etter en ls -l-streng markerer en SELinux-kontekst eller en ACL. Bruk getfacl for å se ACL-oppføringer, som ikke vises av modusen.