Bestandsrechten
Ben je een Linux gebruiker, of een webmaster, die een website beheert die op een Linux-server wordt gehost, kom je onvermijdelijk in een situatie waarin je de foutmelding “You do not have the permissions to upload file to the folder“ krijgt als je bestand probeert te uploaden of te wijzigen. En na wat zoekwerk op Google krijg je vaak de oplossing te zien dat je de bestandstoegang (file permission) moet instellen op "775" of "777". Maar wat doet precies "777"?
Inleiding
Unix-systemen (met inbegrip van Linux en Mac OS X) beschikken over een bestand-controlemechanisme om te bepalen wie toegang heeft tot een bepaald bestand of map en welke acties zij kunnen uitvoeren in die map en met die bestanden. Het bestand-controlemechanisme bestaat uit twee delen:
- Klassen bepalen wie toegang heeft tot de bestanden en/of de map. Er zijn drie klassen:
- Eigenaar (owner): de eigenaar is meestal diegene die het bestand of de map heeft gemaakt. In Linux zijn de bestanden die je maakt in je Home map jouw eigendom tenzij je dat anders bepaalt;
- Groep (group): is een groep van gebruikers die dezelfde machtigingen en gebruikersprivileges delen;
- Andere (other): dat is iederen, het publiek in het algemen;
- machtigingen (permissions) bepalen welke acties de gebruikers, die toestemming hebben gekregen, kunnen uitvoeren. Er zijn drie types van acties die je op een bestand/folder kan uitvoeren:
- Read: je kan het bestand alleen lezen maar niet wijzigingen; als het over een map gaat, kan je alleen de bestanden bekijken en niet deleten;
- Write: je kan het bestand wijzigen en deleten; als over een map gaat kan je de bestanden erin ook wijzigen en deleten;
- Execute: je kan het bestand ook uitvoeren;
Door klassen en de machtigingen te combineren, kan je bepalen wie toegang heeft tot het bestand en welke acties zij kunnen uitvoeren.
De eigenaar beschikt meestal over alle machtigingen (lezen, schrijven en uitvoeren) op het bestand en/of map. Als je niet de eigenaar van het bestand / map bent, moet je de eigenaar van het bestand / map veranderen in jouw naam, of de machtigingen van de Groep of Other veranderen om te kunnen lezen, schrijven of uit te voeren.
Als je niet in staat bent om een bestand te uploaden op een webserver, komt dat waarschijnlijk door het feit dat je niet de eigenaar van de doelmap bent, of dt je niet voldoende rechten hebt om bestanden toe te voegen aan de map.
https://www.maketecheasier.com/file-permissions-what-does-chmod-777-means/
Nu je begrijpt wat klassen en machtigingen zijn, kunnen we ons verdiepen in de betekenis van de getallen "777" of "775".
Elk bestand en elke map bevat een 8-bit gegeven die de toegangsrechten bepaalt. De basis binaire voorstelling daarvan ist "000", wat betekent dat er geen rechten van welke vorm dan ook zijn toegekend.
Als je een "Read" toestemming geeft wordt het 4-bit gegeven toevoegd aan de basis toegevoegd, waardoor het "100" (in binaire vorm) wordt of "4" in de decimale notatie.
Een "Write" toestemming voegt het 2-bit gegeven toe waardoor het "010", binair voorgesteld, wordt en "2" in decimale vorm.
Ten slotte voegt een "Execute" toestemming 1 bit toe wat zal resulteren in "001" of "1" in decimale vorm.
Samengevat:
- Read wordt weergegeven door "4";
- Write is gelijk aan "2";
- Execute wordt weergegeven door "1"
Wanneer we machtigingen willen instellen, voegen we gewoon het nummer toe. Bijvoorbeeld, om de permissies (4 + 2) in te stellen om te lezen en te schrijven, maken we gebruik van '6' voor de toestemming. Om lezen, schrijven en uit te voeren in te stellen, gebruiken we '7' (4 + 2 + 1) voor de toestemming.
Hier volgt een overzicht van de verschillende combinaties:
- 0 - geen toestemming
- 1 - uit te voeren
- 2 - schrijf
- 3 - schrijven en uitvoeren
- 4 - lees
- 5 - te lezen en uit te voeren
- 6 - lezen en schrijven
- 7 - lezen, schrijven en uit te voeren
En wat betekenen nu de 3 cijfers '777'?
Het eerste cijfer zegt wie de eigenaar, het tweede cijfer stelt de groep voor en het derde cijfer is toegewezen aan de anderen (other, het grote publiek). Dus, een bestand met de 777 machtiging, kan door iedereen gelezen, gewijzigd en uitgevoerd worden. Hieronder zie je enkele voorbeelden van de meest gebruikte machtigingen:
755 - Deze set van toestemming wordt vaak gebruikt in web-server. De eigenaar heeft alle machtigingen om te lezen, schrijven en uitvoeren. Iedereen kan alleen lezen en uitvoeren, maar kan geen wijzigingen aan het bestand te maken.
777 - Iedereen kan schrijven te lezen en uit te voeren. In een webserver, is het niet aan te raden om '777' toestemming om uw bestanden en mappen instellen als het kan iedereen om kwaadaardige code toe te voegen aan uw server. Echter, in sommige gevallen, moet u de 777 machtigingen in te stellen voordat u een bestand (in WordPress Bijvoorbeeld, het uploaden van foto's) kunnen uploaden naar de server
644 - Alleen de eigenaar kan lezen en schrijven. Iedereen kan alleen lezen. Niemand kan het bestand uit te voeren.
655 - Alleen de eigenaar kan lezen en schrijven, maar het bestand niet uitvoeren. Iedereen kan lezen en uit te voeren, maar kan het bestand niet wijzigen.
Bestandsmachtigingen instellen
In de terminal gebruik je de chmod
opdracht om de bestandstoegang te veranderen. In het kort, chmod 777
bijvoorbeeld betekent dat je het bestand leesbaar, schrijfbaar en uitvoerbaar door iedereen maakt.
chmod 775 /pad/naar/bestand
Om alle gebruikers te tonen:
cd .. cut -d: -f1 /etc/passwd