Hoe werken file permissions?

Auteur
afbeelding van paranoid
Auteur: paranoid
Aangemaakt: 02/07/2002 - 00:00
Aangepast: 02/07/2002 - 00:00
<p>Een groot verschil met Windows95/98/ME, waar iedereen bestanden kan verwijderen of aanpassen, is dat men onder linux kan instellen wie wat met een bepaald bestand kan doen.</p> <p><b>File ownership</b></p> <p>Alle bestanden onder linux zijn eigendom van een bepaalde gebruiker (user) en een bepaalde groep waar die gebruiker toe behoord (group). Een bestand is eigendom van de gebruiker die het heeft aangemaakt en van de eerste groep waartoe die gebruiker behoort. Omdat een gebruiker tot meerdere groepen kan behoren kan hij de groep wijzigen van een bestand waarvan hij de eigenaar is. Dit gebeurd met het commando <tt>chgrp</tt>. Om te weten tot welke groepen je allemaal behoort gebruik je het commando <tt>groups</tt>. De gebruiker 'root' kan de eigenaar van een bestand veranderen, dit met het commando <tt>chown</tt>. </p> <p><b>File permissions</b></p> <p>Bestandstoegang bepaald wie wat kan doen met een bepaald bestand. Dit is opgedeeld in vier delen:</p> <ul> <li>Extended permissions: komen later aan bod</li> <li>User permissions: deze bepalen wat de eigenaar van het bestand ermee kan doen</li> <li>Group permissions: deze bepalen wat andere leden van de groep waartoe het bestand behoord, met het bestand kunnen doen</li> <li>World permissions: deze bepalen wat andere gebruikers die geen lid zijn van de groep waartoe het bestand behoord, met het bestand kunnen doen</li> </ul> <p>Er zijn 3 flags die kunnen worden ingesteld: read, write en execute.</p> <p><b>read</b> Kan het bestand lezen, bij mappen betekent dit dat men de inhoud van die map kan opvragen.</p> <p><b>write</b> Kan het bestand wijzigen, bij mappen betekent dit dat men bestanden uit die map kan verwijderen. Je kan dus geen bestand verwijderen als je geen write-toegang hebt tot de map waarin het bestand staat.</p> <p><b>execute</b> Kan het bestand uitvoeren als een programma, bij mappen betekent dit dat je je naar die map kan verplaatsen via het commando <tt>cd</tt>. <p> Er zijn twee manieren waarmee deze bestanden kunnen worden voorgesteld, door middel van symbolen of doormiddel van een getal.</p> <p><b>Voorstelling dmv symbolen</b></p> <p>Deze voorstelling gebruikt r als symbool voor read permission, w als symbool voor write permission en x als symbool voor execute permission. In deze voorstelling komen deze telkens in groepen van 3 tekens voor, eerst voor de user, dan voor de groep en dan voor al de rest. Als een flag is ingesteld staat er de voorstelling van die flag (bv een r voor read permission), zo niet staat er een -. Als je <tt>ls -l</tt> uitvoert zal er als eerste teken een - staan voor een gewoon bestand, een d voor een directory, een l voor een link..</p> <p>Een voorbeeld: Als je een <tt>ls -l</tt> uitvoert op een bestand staat er dit: -rwxr-xr-- Het eerste teken (-) betekent dat het om een gewoon bestand gaat. De volgende drie (rwx) zijn voor de user, wat dus betekent dat deze lees, schrijf en execute toegang heeft. De volgende drie (r-x) zijn die voor de group, deze heeft dus lees en execute toegang. De laatste drie (r--) zijn de world permissions. Deze heeft dus enkel lees toegang.</p> <p>Om de permissions van een bestand te veranderen doet men <tt>chmod (cat)(+-=)(flag)</tt> waarbij (cat) = u voor de user, g voor de groep, o voor de rest en a als deze verandering van toepassing moet zijn op iedereen. (flag) = r voor leestoegang, w voor schrijftoegang en x voor execute-toegang. Om deze flags toe te voegen aan de huidige permissions laat je dit vooraf gaan door een +, om ze af te nemen laat je ze vooraf gaan door een -. Als je er een = voor zet worden de permissions ingesteld op hetgeen er achter komt. bv. <tt>chmod a+r file.txt</tt> om iedereen toegang te geven om het bestand te lezen.</p> <p><b>Voorstelling dmv een getal</b></p> <p>Deze manier van voorstellen kan op het eerste zicht heel moeilijk lijken, maar het valt nog tamelijk mee eens je het begrijpt.</p> <p>In deze voorstelling wordt read permission voorgesteld als een 4, write permission als een 2 en execute permission als een 1. De reden hiervoor heeft te maken met de binaire voorstelling van deze getallen, maar daar zal ik niet verder op ingaan. Om iemand meerdere permissions te geven volstaat het gewoon deze waarden bij elkaar op te tellen. Read en write wordt op die manier 6, read en execute wordt 5 etc..</p> <p>Om dit voor de verschillende groepen van gebruikers in te stellen worden deze gewoon achter elkaar gezet. Het eerste getal is van de Extended permissions (zie verder) en is bijna altijd 0, het tweede is dat van de user, het derde is dat van de groep en het laaste is van world.</p> <p>Een eenvoudig voorbeeld om dit te verduidelijken: Stel je hebt een bestand met als permissions 0754. De 0 staat voor de extended permissions en is in dit voorbeeld dus van geen belang. Als tweede staat er een 7, dit zijn de user permissions. Aangezien 7 = 4 + 2 + 1 betekent dit dat de user lees, schrijf en execute toegang heeft. Voor de group staat er een 5. 5 = 4 + 1, dus heeft de group lees en schrijf toegang. Als laatste staan er de world permissions. Deze is 4, dus enkel lees toegang.</p> <p>Om de permissions in te stellen kan men dus gewoon <tt>chmod 0754 (bestand)</tt> doen.</p> <p><b>Extended permissions</b></p> <p>suid en sgid zijn tamelijk simpel en zijn enkel van toepassing op uitvoerbare bestanden en mappen.</p> <p>Als een programma wordt uitgevoerd wordt dit altijd gedaan met de permissions van de persoon die het programma uitvoert. Wat dit programma kan doen wordt dus ook beperkt tot de dingen die deze gebruiker kan doen. Soms kan het echter handig zijn dat een programma dat door gewone gebruikers wordt uitgevoerd, dingen kan doen die normaal gezien enkel door een andere gebruiker kunnen worden gedaan (bv root), dit kan gedaan worden dmv suid en sgid.</p> <p>Als de suid flag wordt ingesteld zal het programma altijd worden uitgevoerd met de permissions van de eigenaar van het programma ipv met de permissions van de gebruiker die dit programma start. Suid heeft geef effect op mappen.</p> <p>Als de sgid flag wordt ingesteld zal het programma altijd worden uitgevoerd met de permissions van de groep die eigenaar is van het programma. Sgid heeft niet altijd effect op mappen, maar op sommige systemen betekent het dat elk nieuw bestand dat wordt aangemaakt in die map dezelfde groep heeft als die map zelf, maakt niet uit wie het bestand heeft aangemaakt.</p> <p>WAARSCHUWING: suid en sgid kunnen een groot gevaar betekenen voor de beveiliging van uw systeem als ze verkeerd worden gebruikt.</p>
Inhoud syndiceren
Contact · Disclaimer