Geavanceerde aspecten van bestandspermissies

Numierieke argumenten gebruiken met chmod

Eerder in dit hoofdstuk, noemde we in 't kort dat je met gebruik van nummers bestandspermissies in kunt stellen. De numerieke notatie wordt een absolute mode genoemd, als tegengestelde van de symbolische notatie (e.g. u+rx) wat vaak een relatieve mode wordt genoemd. Dit omdat het nummer een exact in te stellen mode aangeeft, en het symbool specificeert slechts een te maken wijziging (b.v. "voeg voor de gebruiker read en execute-permissie toe").

De numerieke mode bestaat uit een serie cijfers in het octale stelsel of twaalf binaire cijfers. Ieder octaal cijfer (grondtal is acht) wordt voorgesteld door drie binaire cijfers: één octaal cijfer en drie binaire cijfers zijn twee manieren om de decimale cijfers 0 tot en met 7 weer te geven.

Het afleiden van een bepaalde mode is tamelijk ongecompliceerd. Je telt eenvoudigweg de gewenste modes bij elkaar op, of trekt de modes ervan af die je niet wilt. Als voorbeeld, gebruikerspermissies, met alleen de read-permissie aangezet, zou in binair 100 opleveren. Gebruikerspermissies met alleen de write-permissie aangezet zou in binair 010 zijn. Gebruikerspermissies met zowel read als write aangezet zou 100 + 010 = 110 zijn. Als alternatief zou je het in het octale stelsel kunnen zetten: 4 + 2 = 6.

Voor de volledige mode, tel je gewoon de cijfers uit deze tabel bij elkaar op:
0001        anderen, execute
0002        anderen, write
0004        anderen, read
0010        groep, execute
0020        groep, write
0040        groep, read
0100        gebruiker, execute
0200        gebruiker, write
0400        gebruiker, read
1000        sticky bit
2000        zet group id
4000        zet user id

Beslis eerst welke permissies je in wilt stellen, als je de tabel wilt gebruiken. Tel de nummers voor die permissies dan bijelkaar op. Het totaal is je mode. Om bijvoorbeeld mode 0755 te verkrijgen:
0001   o=x
0004   o=r
0010   g=x 
0040   g=r
0100   u=x
0200   u=w
+ 0400   u=r
-------
0755  u=rwx go=rw

Je zou deze mode eigenlijk gewoon 755 noemen, zonder de voorafgaande 0, omdat chmod aan het begin van de mode automatisch nullen toevoegt --- 7 betekent mode 0007.

Voor het instellen van een bestand op 755, zou je typen chmod 755 mijn-bestand.

755 is een vrij algemene mode voor directory's, aangezien het iedereen toestaat de directory te gebruiken, maar alleen de eigenaar kan bestanden in de directory aanmaken en verwijderen. 644 is de analoge mode voor bestanden, en is ook vrij algemeen. Het staat iedereen toe het bestand te gebruiken, alleen de eigenaar kan het wijzigen. Voor uitvoerbare bestanden is 755 een algemene mode; dit is gewoon 644 plus permissie om uit te voeren (644 + 111 = 755).