Vad är oktala och symboliska chmod-lägen?

chmod ställer in behörigheterna för en fil i Linux, macOS och andra Unix-system, och stöder två notationer. Ett oktal-läge, till exempel 755, har en siffra vardera för ägaren, gruppen och alla andra, där läsning är 4, skrivning är 2 och körning är 1. Ett symboliskt läge, till exempel u=rwx,g=rx,o=rx, anger i stället klasserna (u ägare, g grupp, o övriga, a alla) och behörigheterna (r, w, x).

Symboliska lägen kan också ändra behörigheter i stället för att ange alla: u+x lägger till körbehörighet för ägaren, go-w tar bort skrivbehörighet för gruppen och övriga, och g=u kopierar ägarens behörigheter till gruppen. Ett oktalt läge anger alltid alla behörigheter, så resultatet i oktal form av en ändring beror på vilket läge filen hade innan.

Beskrivning av verktyget

Det här verktyget konverterar chmod-lägen mellan oktal och symbolisk notation. Välj käll- och målnotation, eller låt källan stå på automatisk identifiering: ange 755 för att få u=rwx,g=rx,o=rx, eller ange ett symboliskt läge för att få det oktala värdet. För ändringar som u+x eller a+X anger du filens aktuella läge och ser det läge som chmod skulle lämna den med. Du kan även klistra in en behörighetssträng från ls -l, till exempel -rwxr-xr-x, eller ett helt chmod-kommando.

Exempel

Oktal Symbolisk ls -l Typisk användning
644 u=rw,go=r -rw-r--r-- Vanliga filer
755 u=rwx,go=rx -rwxr-xr-x Skript, program och kataloger
600 u=rw,go= -rw------- Privata filer, till exempel SSH-nycklar
2775 u=rwx,g=rwxs,o=rx drwxrwsr-x Delade kataloger som behåller sin grupp
1777 a=rwx,+t drwxrwxrwt /tmp och andra delade arbetskataloger
4755 u=rwxs,go=rx -rwsr-xr-x Program som passwd

Funktioner

  • Konverterar oktal till symbolisk notation och symbolisk notation till oktal, med en växlingsknapp för att byta riktning
  • Identifierar notationen för det läge du anger, eller konverterar från den notation du väljer
  • Tillämpa relativa ändringar som u+x, go-w, a=r,u+w, g=u och a+X på ett aktuellt läge
  • Hanterar setuid, setgid och sticky bit (s, t och oktala lägen med 4 siffror)
  • Skriver det symboliska läget i fullständig form (u=rwx,g=rx,o=rx) eller kompakt form (u=rwx,go=rx)
  • Läser och skriver behörighetssträngar från ls -l, inklusive s, S, t och T
  • Accepterar inklistrade kommandon som sudo chmod -R 755 dir
  • Visar exakt vilket tecken som är fel när ett läge är ogiltigt

Så fungerar det

Ett oktalt läge läses som upp till fyra siffror: den valfria första siffran innehåller setuid (4), setgid (2) och sticky bit (1), och de tre andra innehåller ägarens, gruppens och de övrigas behörigheter. Ett symboliskt läge läses sats för sats enligt POSIX-grammatiken och tillämpas på det aktuella läget på samma sätt som GNU chmod i Linux:

  • + lägger till behörigheter, - tar bort dem och = anger dem samt rensar resten för de angivna klasserna.
  • X lägger endast till körbehörighet för kataloger och för filer som redan har körbehörighet för någon.
  • s ställer in setuid med u och setgid med g. t ställer in sticky bit med o, a eller utan klass.
  • Utan klass, som i +x, tillämpas ändringen på alla utom de bitar som blockeras av umask.
  • För kataloger förblir setuid och setgid oförändrade om inte läget anger dem, som i g-s.

Den symboliska utdataformen anger varje bit uttryckligen, så för en fil ger den samma resultat oavsett vilket läge filen hade innan. Sticky bit skrivs som en separat +t-sats eftersom både GNU och BSD chmod accepterar den i den formen.

Tips

  • Använd a+X med chmod -R för att göra kataloger sökbara utan att göra alla filer körbara.
  • chmod 755 på en katalog tar inte bort setgid med GNU chmod. Använd chmod 00755 eller g-s för att ta bort det.
  • Ansible och många konfigurationsfiler förväntar sig en inledande nolla, som i 0755. Aktivera ”Visa alltid 4 oktala siffror” för att få det.
  • Ett . eller + efter en ls -l-sträng markerar en SELinux-kontext eller en ACL. Använd getfacl för att se ACL-poster, som inte visas av läget.