Wat zijn octale en symbolische chmod-modi?

Met chmod stelt u de machtigingen van een bestand in op Linux, macOS en andere Unix-systemen. Daarbij worden twee notaties geaccepteerd. Een octale modus, zoals 755, heeft één cijfer voor de eigenaar, de groep en alle anderen. Lezen is 4, schrijven is 2 en uitvoeren is 1. Een symbolische modus, zoals u=rwx,g=rx,o=rx, benoemt in plaats daarvan de klassen (u eigenaar, g groep, o anderen, a iedereen) en de machtigingen (r, w, x).

Symbolische modi kunnen machtigingen ook wijzigen in plaats van ze allemaal in te stellen: u+x voegt uitvoermachtiging toe voor de eigenaar, go-w verwijdert schrijfmachtiging voor de groep en anderen, en g=u kopieert de machtigingen van de eigenaar naar de groep. Een octale modus stelt altijd elke machtiging in, waardoor het octale resultaat van een wijziging afhangt van de modus die het bestand daarvoor had.

Beschrijving van de tool

Deze tool converteert chmod-modi tussen octale en symbolische notatie. Kies de bron- en doelnotatie, of laat de bron op automatisch detecteren staan: voer 755 in om u=rwx,g=rx,o=rx te krijgen, of voer een symbolische modus in om de octale waarde te krijgen. Voer bij wijzigingen zoals u+x of a+X de huidige modus van het bestand in om te zien welke modus chmod daarna zou instellen. U kunt ook een machtigingsreeks uit ls -l plakken, zoals -rwxr-xr-x, of een volledige chmod-opdracht.

Voorbeelden

Octaal Symbolisch ls -l Typisch gebruik
644 u=rw,go=r -rw-r--r-- Gewone bestanden
755 u=rwx,go=rx -rwxr-xr-x Scripts, programma's en mappen
600 u=rw,go= -rw------- Privébestanden zoals SSH-sleutels
2775 u=rwx,g=rwxs,o=rx drwxrwsr-x Gedeelde mappen die hun groep behouden
1777 a=rwx,+t drwxrwxrwt /tmp en andere gedeelde tijdelijke mappen
4755 u=rwxs,go=rx -rwsr-xr-x Programma's zoals passwd

Functies

  • Converteert octaal naar symbolisch en symbolisch naar octaal, met een wisselknop om de richting om te draaien
  • Detecteert de notatie van de ingevoerde modus of converteert vanuit de gekozen notatie
  • Past relatieve wijzigingen toe, zoals u+x, go-w, a=r,u+w, g=u en a+X, op een huidige modus
  • Verwerkt setuid, setgid en de sticky bit (s, t en viercijferige octale modi)
  • Schrijft de symbolische modus volledig (u=rwx,g=rx,o=rx) of compact (u=rwx,go=rx)
  • Leest en schrijft machtigingsreeksen van ls -l, inclusief s, S, t en T
  • Accepteert geplakte opdrachten zoals sudo chmod -R 755 dir
  • Wijst bij een ongeldige modus het exacte teken aan

Werking

Een octale modus wordt gelezen als maximaal vier cijfers: het optionele eerste cijfer bevat setuid (4), setgid (2) en de sticky bit (1), terwijl de overige drie cijfers de machtigingen voor de eigenaar, de groep en anderen bevatten. Een symbolische modus wordt clausule voor clausule gelezen volgens de POSIX-grammatica en toegepast op de huidige modus op dezelfde manier als GNU chmod op Linux:

  • + voegt machtigingen toe, - verwijdert ze en = stelt ze in en wist de overige machtigingen voor de genoemde klassen.
  • X voegt alleen uitvoermachtiging toe aan mappen en aan bestanden die al voor iemand uitvoermachtiging hebben.
  • s stelt setuid in met u en setgid met g. t stelt de sticky bit in met o, a of zonder klasse.
  • Zonder klasse, zoals bij +x, wordt de wijziging op iedereen toegepast, behalve op de bits die door de umask worden geblokkeerd.
  • Bij mappen blijven setuid en setgid ongewijzigd tenzij de modus ze benoemt, zoals bij g-s.

De symbolische uitvoer stelt elke bit expliciet in, zodat deze voor een bestand hetzelfde resultaat geeft, ongeacht de modus die het bestand daarvoor had. De sticky bit wordt als een afzonderlijke clausule +t geschreven, omdat zowel GNU als BSD chmod deze vorm accepteert.

Tips

  • Gebruik a+X met chmod -R om mappen doorzoekbaar te maken zonder elk bestand uitvoerbaar te maken.
  • chmod 755 op een map verwijdert setgid niet met GNU chmod. Gebruik chmod 00755 of g-s om dit te verwijderen.
  • Ansible en veel configuratiebestanden verwachten een voorloopnul, zoals bij 0755. Schakel "Altijd 4 octale cijfers weergeven" in om deze te krijgen.
  • Een . of + na een ls -l-reeks markeert een SELinux-context of een ACL. Gebruik getfacl om ACL-vermeldingen te bekijken; deze worden niet door de modus weergegeven.