Mode

Naast dat ieder bestand en iedere directory als eigenaar een gebruiker en groep heeft, hebben beiden ook een mode, waarmee wordt vastgesteld wie toestemming heeft om het bestand te lezen, beschrijven en uit te voeren. Er zijn nog wat andere dingen die door de mode worden vastgesteld, maar dat zijn geavanceerde onderwerpen en die zullen we voor nu overslaan.

De mode ziet er in de uitvoer van ls als volgt uit: -rw-r--r--. Er zijn hier tien "elementen", en de mode bestaat eigenlijk uit twaalf bits (denk aan bits als schakelingen die aan of uit kunnen zijn). Maar nu zullen we slechts negen van deze bits in aanmerking nemen: degenen die de permissies read, write, en execute regelen voor de gebruiker die eigenaar is van het bestand, de groep die eigenaar is van het bestand, en anderen (iedereen op het systeem, soms genoemd world).

Merk op dat drie soorten permissies (read, write, execute) maal drie sets mensen die permissies kunnen hebben (gebruiker, groep, anderen) een totaal geeft van negen elementen.

In de mode regel, geeft het eerste "element" het type van het bestand. De - betekent in dit geval dat het een regulier bestand is. Als het een d was, zouden we naar een directory aan het kijken zijn. Er zijn nog andere mogelijkheden maar die zijn te gecompliceerd om hier nu op in te gaan (zie de paragraaf Geavanceerde aspecten van bestandspermissies in Hoofdstuk 16).

De resterende negen "elementen" worden gebruikt om de 12 bits waaruit de mode van het bestand bestaat, weer te geven. De basis 9 bits (read, write, en execute voor gebruiker, groep, en anderen) worden weergegeven als drie blokken met rwx.

Dus als alle permissies aan staan en dit een regulier bestand is, zal de mode er als volgt uitzien: -rwxrwxrwx. Als het een directory zou zijn met alle permissies uit voor anderen en volledige permissies voor gebruiker en groep, zou het er uitzien als drwxrwx---.

(De resterende drie bits worden weergegeven door het wijzigen van de x in s, t, S, of T, maar dit is een gecompliceerd onderwerp dat we bewaren voor de paragraaf Geavanceerde aspecten van bestandspermissies in Hoofdstuk 16.)

Voor reguliere bestanden, hebben de "read", "write" en "execute" permissies de volgende betekenissen:

Directory modes zijn een beetje verwarrend, dus hier zijn wat voorbeelden van de effecten bij diverse combinaties:

r--

De gebruiker, groep, of anderen met deze permissies mogen de inhoud van de directory weergeven, maar verder niets. De bestanden in de directory kunnen niet worden gelezen, veranderd, verwijderd of op enige wijze worden gemanipuleerd. De enige toegestane actie is het lezen van de directory zelf, dat wil zeggen, zien welke bestanden het bevat.

rw-

Write permissie heeft geen effect bij de afwezigheid van execute permissie, dus deze mode gedraagt zich net als de mode van hiervoor.

r-x

Deze mode staat toe dat de bestanden in een directory kunnen worden weergegegeven, en geeft permissie die bestanden te benaderen. Bestanden kunnen echter niet worden aangemaakt of verwijderd. Benaderen betekent dat je bestanden kunt bekijken, wijzigen of uitvoeren zoals de permissies voor de bestanden zijn ingesteld.

--x

Bestanden in deze directory kunnen worden benaderd, maar de inhoud van de directory kan niet worden weergegeven, dus je zal van te voren moeten weten naar welk bestand je zoekt (tenzij je goed kunt gokken). Bestanden kunnen niet worden aangemaakt of verwijderd.

rwx

Je kunt met de bestanden in deze directory alles doen wat je wilt, zolang als het is toegestaan door de permissies van de bestanden zelf.

Write permissie voor directory's geeft aan of je bestanden in een directory kunt verwijderen --- een read-only bestand kan worden verwijderd, als je permissie hebt de directory te beschrijven waarin het bestand zich bevindt. Je kunt een bestand uit een read-only directory niet verwijderen, zelfs niet als je wijzigingen aan het bestand mag aanbrengen. Bestandspermissies hebben niets te maken met het verwijderen van bestanden.

Dit betekent ook dat als je de eigenaar bent van een directory, je er tevens bestanden uit kunt verwijderen, zelfs als die bestanden aan root toebehoren.

Execute permissie op directory's stelt vast of je toegang hebt tot bestanden --- en of de bestandspermissies erbij worden betrokken. Als je execute permissies hebt voor een directory worden de bestandspermissies voor die directory relevant. Anders doen bestandspermissies er niet toe; je kunt de bestanden toch niet benaderen.

Als je execute permissie hebt voor een directory, bepalen de bestandspermissies of je de inhoud van het bestand kunt lezen, het bestand kunt wijzigen, en/of het bestand als een opdracht uit kunt voeren.

Tot besluit, permissie om permissies van een bestand of directory te wijzigen heeft geen invloed op de permissies van dat bestand of die directory. Je kunt juist altijd de permissies van de bestanden of directory's waarvan je de eigenaar bent, wijzigen, zolang het je is toegestaan het bestand te benaderen, maar niet van de bestanden waarvan iemand anders de eigenaar is. Dus als je een bestand ook maar enigszins kunt benaderen (dat wil zeggen dat je execute permissie hebt voor de directory waarin het bestand zich bevindt) dan kun je de permissies ervan veranderen.

Dit betekent dat je permissies van jezelf niet permanent kunt verwijderen omdat je ze altijd terug kunt geven. Stel dat je de write permissie voor de gebruiker verwijderd van een bestand, waarvan je de eigenaar bent, probeer het bestand dan eens te wijzigen. Het zal niet worden toegestaan, maar je kunt jezelf de write-permissie altijd teruggeven en het bestand dan wijzigen. De enige manier om de mogelijkheid kwijt te raken om de permissies terug te zetten is als je de toegang tot het bestand geheel kwijtraakt.