Tutorials
Rechten in Linux en PHP
Een korte tutorial over hoe rechten worden geset.
Pagina 1
Inleiding
Rechten zijn een belangrijk onderdeel van een filesystem. Het geeft aan wat een file wel of niet mag en wat een gebruiker daar mee kan. Steeds vaker zie ik problemen hier op PHPhulp m.b.t. Rechten. Deze tutorial beschrijft de linux manier van rechten toepassen.
Pagina 2
chmod
echten kunnen we in PHP wijzigen met chmod(). Chmod() vindt net als vele andere PHP functies zijn oorsprong in het Linux besturingsysteem. Chmod maakt gebruik van een octaal systeem waarmee rechten worden gezet nl:
4 = read
2 = write
1 = execute
0 = nothing
deze worden in een reeks van 3 of 4 weergegeven bijvoorbeeld: 644 of 0644. Om een recht te berekenen moeten we snappen wat deze getalletjes inhouden. De volgorde van links naar rechts gaat als volgt: Het eerste getal betekent “owner” de eigenaar dus. Het tweede getaal betekent “group” dit geldt voor de groep waar de gebruiker lid van is. Het derde getal betekent “other users” dit zijn dus de overige gebruikers. Het eerste getal het zogenaamde sticky bit deze wordt in de Linux wereld eigenlijk niet meer gebruikt maar komt nog wel voor in de Unix wereld en op MACOSX.
Om als voorbeeld een foto album te nemen. Foto's worden geupload foto's zijn over het algemeen .jpg bestanden. Deze hoeven niet uitvoerbaar(1 execute) te zijn voor niemand. Dus geven we de owner (het eerste getal) een 6 (4 read + 2 write) = 6. De groep hoeft hier niets te doen maar mag wel lezen. Deze geven we dus een 4. Andere users mogen niets mer de files dus die geven we een 0. We komen dus neer op 640. Dit is een veilige manier van rechten toepassen nu kan alleen jij als gebruiker de files wijzigen. Maar nu wil je de foto's weergeven en komt er achter dat de foto's niet worden weergegeven. Dit is vrij logisch, pagina's worden geladen vanuit de apache user die heeft dus recht 0. Die mag niets met de file. Er zijn twee oplossingen voor dit probleem:
1.Laat je useraccount toevoegen aan de apache groep.
2.Geef de rechten 644 aan de file(s).
4 = read
2 = write
1 = execute
0 = nothing
deze worden in een reeks van 3 of 4 weergegeven bijvoorbeeld: 644 of 0644. Om een recht te berekenen moeten we snappen wat deze getalletjes inhouden. De volgorde van links naar rechts gaat als volgt: Het eerste getal betekent “owner” de eigenaar dus. Het tweede getaal betekent “group” dit geldt voor de groep waar de gebruiker lid van is. Het derde getal betekent “other users” dit zijn dus de overige gebruikers. Het eerste getal het zogenaamde sticky bit deze wordt in de Linux wereld eigenlijk niet meer gebruikt maar komt nog wel voor in de Unix wereld en op MACOSX.
Om als voorbeeld een foto album te nemen. Foto's worden geupload foto's zijn over het algemeen .jpg bestanden. Deze hoeven niet uitvoerbaar(1 execute) te zijn voor niemand. Dus geven we de owner (het eerste getal) een 6 (4 read + 2 write) = 6. De groep hoeft hier niets te doen maar mag wel lezen. Deze geven we dus een 4. Andere users mogen niets mer de files dus die geven we een 0. We komen dus neer op 640. Dit is een veilige manier van rechten toepassen nu kan alleen jij als gebruiker de files wijzigen. Maar nu wil je de foto's weergeven en komt er achter dat de foto's niet worden weergegeven. Dit is vrij logisch, pagina's worden geladen vanuit de apache user die heeft dus recht 0. Die mag niets met de file. Er zijn twee oplossingen voor dit probleem:
1.Laat je useraccount toevoegen aan de apache groep.
2.Geef de rechten 644 aan de file(s).
Pagina 3
Rechten
Ik zie vaak op forums berichten als “De rechten staan gewoon op 777 zoals het hoort”. Dit is 9 van de 10x helemaal niet nodig. Neem als voorbeeld: Jij hebt een leuk hosting pakket met SSH en een website(nietmijnwebsite.nl) met een fotoalbum er op. Jij hebt daar een foto upload systeem. D.m.v. Chmod zet je de rechten op 777 zodat er geen foutmeldingen komen en alles netjes werkt. Opzich niets mis mee. Maar op het moment dat iemand via SSH inlogt heeft hij dus de mogelijkheid om via het absolute pad dingen te verwijderen uit jou mappen voorbeeld:
(Dit wordt uitgevoerd in de Linux terminal of via een SSH programma zoals Putty)
Even een uitleg over deze code. Ik log in via SSH op mijn eigen account. Vervolgens ga ik d.m.v. Het absolute pad bestanden verwijderen (rm) uit nietmijnwebsite.nl/upload/. Omdat jij recht 777 aan uploads hebt gegeven kan iedereen deze dus wijzigen. Uiteraard moet je dan wel weten welke gebruikers op het systeem zijn maar dat even achterwege gelaten.
(Dit wordt uitgevoerd in de Linux terminal of via een SSH programma zoals Putty)
ssh –l jurgen www.mijnwebsite.nl
password: *****
[email protected]#: rm /home/nietmijnwebsite.nl/upload/*
Even een uitleg over deze code. Ik log in via SSH op mijn eigen account. Vervolgens ga ik d.m.v. Het absolute pad bestanden verwijderen (rm) uit nietmijnwebsite.nl/upload/. Omdat jij recht 777 aan uploads hebt gegeven kan iedereen deze dus wijzigen. Uiteraard moet je dan wel weten welke gebruikers op het systeem zijn maar dat even achterwege gelaten.
Pagina 4
Nawoord
Ik hoop dat mensen die weinig ervaring hebben op dit gebied hier iets van hebben geleerd. Zodat zij ook aan de slag kunnen en hun systemen weer een beetje meer beveiligen (dus op systeem niveau). Als je vragen of opmerkingen hebt dan kun je deze altijd stellen in de reacties.
Pagina 5
Reacties
0