WordPress Rechten – Hoe de juiste bestandssystemen en eigendomsrechten in te stellen
Over de auteur
Benjamin is de oprichter en hoofdontwikkelaar van Gambit. Hij is de maker van Page Builder Sandwich en Stackable – Ultimate Gutenberg Blocks. U kunt …Meer overBenjamin↬
- 12 min lezen
- WordPress,Servers,Beveiliging,Technieken (WP)
- Opgeslagen voor offline lezen
- Delen op Twitter, LinkedIn
Wanneer mensen het over WordPress beveiliging hebben, zijn bestandspermissies en eigendom meestal het laatste waar ze aan denken. Het installeren van beveiligingsplugins is een goede gewoonte en een must voor elke WordPress website. Als uw bestandssysteem echter niet correct is ingesteld, kunnen de meeste beveiligingsmaatregelen gemakkelijk door indringers worden omzeild.
Permissies en eigendom zijn heel belangrijk bij WordPress-installaties. Het goed instellen hiervan op uw webserver zou het eerste moeten zijn wat u doet na de installatie van WordPress. Verkeerde permissies kunnen fatale fouten veroorzaken, waardoor uw website vastloopt. Verkeerde permissies kunnen uw website ook in gevaar brengen en vatbaar maken voor aanvallen.
Verder lezen op SmashingMag:
- Wat te doen wanneer uw website down gaat
- Hoe uw codeerworkflow georganiseerd te houden
- Hoe uit te vinden waarom uw website niet meer werkt
- 9 stappen naar een gelukkige relatie met uw hostingprovider
Naast de zorgen over de veiligheid, kunnen een aantal andere problemen voortvloeien uit het hebben van de verkeerde set van machtigingen en eigendom. Bent u ooit een wit leeg scherm tegengekomen wanneer u uw website voor de eerste keer probeerde te laden? Of heeft u ooit foutmeldingen gekregen wanneer u afbeeldingen probeerde te uploaden in de media uploader? Het corrigeren van de permissies en eigendom van uw bestanden en mappen zal dit soort problemen vaak verhelpen.
In dit artikel zullen we u alles leren over WordPress bestandssysteem permissies en eigendom: wat ze zijn, waarom ze belangrijk zijn en hoe ze in te stellen. Je zult een paar basisprincipes leren die ik volg om mijn bestandssysteem intact te houden. We zullen ook de twee meest voorkomende WordPress server configuraties behandelen. We zullen uitleggen hoe ze verschillen en, nog belangrijker, hoe je de juiste permissies en eigendom voor elk instelt.
Terminal Vs. FTP Client
In de loop van dit artikel zullen we de terminal gebruiken om de permissies en het eigendom te wijzigen. Waarom gebruiken we in plaats daarvan niet een FTP cliënt? De reden hiervoor is dat FTP een beetje beperkt is voor onze behoeften. FTP kan worden gebruikt om bestanden over te zetten en om bestands- en mappermissies te wijzigen, maar het kan niet worden gebruikt om eigendomsinstellingen te wijzigen.
Om de commando’s die in dit artikel worden genoemd uit te voeren, moet u zijn ingelogd op uw server met het SSH
commando. Als u niet bekend bent met de terminal en SSH
, kunt u hierover meer leren in het artikel “Introductie tot Linux commando’s.”
Gebruikers en Groepen
Voordat we iets anders gaan doen, moeten we het eerst even hebben over wat gebruikers en groepen zijn, omdat deze hand in hand gaan bij het definiëren van permissies.
Een gebruiker is een account dat toegang heeft tot de computer, en een groep is gewoon een identificatie voor een bepaalde set van gebruikers. Dit betekent dat elke keer dat u bestanden overdraagt met FTP, u een gebruikersaccount gebruikt op uw server. En afhankelijk van hoe uw host uw account heeft ingesteld, kunt u (de gebruiker) behoren tot een of meer groepen. Gebruikers en groepen zijn als gebruikers en rollen in WordPress. Beide zijn conceptueel hetzelfde, behalve dat de eerste wordt gebruikt op uw server.
Gebruikers en groepen zijn belangrijk omdat ze helpen bij het identificeren van privileges voor al onze bestanden en mappen. Eigenaren van een bestand hebben normaal gesproken volledige rechten op het bestand; andere gebruikers die tot dezelfde groep behoren, hebben minder rechten op het bestand; terwijl alle anderen er misschien geen rechten op hebben. Deze rechten noemen we permissies.
Wat zijn bestandspermissies?
Permissies bepalen wat gebruikers met een bestand mogen doen. Een permissie wordt weergegeven door een reeks getallen, zoals 644
of 777
, aangeduid als een permissie-modus. Als je al eens plugins in WordPress hebt gebruikt, dan heb je waarschijnlijk al eens de vraag gekregen om de permissies van een bestand of map te wijzigen omdat de plugin er niet naar kan schrijven. Door de permissies van het bestand te wijzigen, sta je de webserver toe om toegang te krijgen tot dat bestand of die map.
Denk aan een permissiemodus als een set van “wie kan wat doen” verklaringen, waarin elk cijfer overeenkomt met het “wie” deel van de verklaring:
- Eerste cijfer. Wat de gebruiker van de account die eigenaar is van het bestand kan doen
- Tweede cijfer. Wat andere gebruikersaccounts in de groep van de eigenaar kunnen doen
- Derde cijfer. Wat de gebruikersaccounts van alle anderen (inclusief bezoekers van de website) kunnen
Het volgende cijfer komt overeen met het “wat” gedeelte van de verklaring en is een som van een combinatie van elk van deze cijfers:
-
4
Een bestand lezen, of de namen van de bestanden in een map lezen -
2
Een bestand schrijven of wijzigen, of de inhoud van een map wijzigen -
1
Een bestand uitvoeren of uitvoeren, of toegang hebben tot de bestanden in een map
Deze cijfers zijn de privileges die zijn toegewezen aan de “wie” in de toestemmingsmodus. Merk op in de lijst hierboven dat privileges iets anders betekenen voor bestanden en mappen.
Het gebruik van de juiste permissie-modus is heel belangrijk. Om dit beter te illustreren, denk opnieuw aan gebruikers en rollen in WordPress. Op een WordPress website hebben bijdragers en beheerders verschillende sets van mogelijkheden. Contribuanten mogen nieuwe blog posts aanmaken, maar ze mogen geen plugins toevoegen. Beheerders, aan de andere kant, kunnen plugins toevoegen en ook blog posts aanmaken. Beheerders mogen zelfs het uiterlijk van de website veranderen als ze dat willen. Een duidelijke lijn scheidt wat gebruikers in verschillende rollen kunnen doen. Dit is hetzelfde met toestemmingsmodi, behalve dat we in plaats van te maken hebben met blogberichten en thema-opties, te maken hebben met bestanden en mappen op de server.
Toestemmingsmodi wijzigen
FTP-clients bieden meestal een interface waar u gemakkelijk de toestemmingsmodus van uw bestanden en mappen kunt wijzigen. Hier is een screenshot van de interface in mijn FTP-client:
Voorbeeld van een toestemmingsmodus interface.
Als u toegang hebt tot de terminal van uw server, kunt u ook het chmod
commando gebruiken om de toestemmingsmodus van een bestand of map te wijzigen:
sudo chmod 644 <file>
Om de toestemmingsmodus van alle bestanden of mappen te wijzigen, gebruikt u chmod
in combinatie met het find
commando. U kunt dit bijvoorbeeld gebruiken om alle bestanden te wijzigen in 644
:
sudo find . -type f -exec chmod 644 {} +
Of gebruik dit om al uw mappen te wijzigen in 755
:
sudo find . -type d -exec chmod 755 {} +
Raadpleeg “Bestandstoestemmingen wijzigen in de WordPress Codex” voor een handleiding voor het wijzigen van toestemmingsmodi.
Het verschil tussen 644 en 777
Laten we eens kijken naar enkele toestemmingsmodi en hoe ze onze website beïnvloeden.
Wat zou een PHP script met een toestemmingsmodus van 644
betekenen? Na de uitleg hierboven over hoe toestemmingsmodi werken, kunnen we ontcijferen wat deze modus gebruikers toestaat te doen met ons script:
- De privileges van de eigenaar zijn “lezen” (4) + “schrijven” (2) =
6
- De privileges van de groep van de eigenaar zijn “lezen” (4) =
4
- Iedereen anders zijn privileges zijn “lezen” (4) =
4
In gewone taal betekent dit dat:
- als wij eigenaar zijn van het script, mogen wij het lezen en wijzigen;
- iedereen anders mag het alleen lezen.
Zoals we kunnen zien, is 644
een goede toestemmingsmodus voor ons PHP script. We kunnen er wijzigingen in aanbrengen, en onze webserver kan het lezen.
Nu gaan we kijken naar mappen. Wat als we een map hadden met een toestemmingsmodus van 777
? Deze toestemmingsmodus kan als volgt worden opgesplitst:
- De rechten van de eigenaar zijn “lezen” (4) + “schrijven” (2) + “uitvoeren” (1) =
7
- De groepsrechten van de eigenaar zijn “lezen” (4) + “schrijven” (2) + “uitvoeren” (1) =
7
- Iedereen anders zijn privileges zijn “lezen” (4) + “schrijven” (2) + “uitvoeren” (1) =
7
Dit betekent dat
- iedereen een lijst van bestandsnamen in onze map kan krijgen;
- iedereen kan elk bestand in onze map maken, wijzigen en verwijderen;
- iedereen kan toegang krijgen tot de bestanden in onze map.
Het is duidelijk dat 777
een slechte toestemmingsmodus is voor alles op onze WordPress website omdat elke bezoeker in staat zou zijn om bestanden toe te voegen aan onze map of zelfs scripts te verwijderen. Erger nog, iedereen zou in staat zijn om kwaadaardige code in te voegen en onze website te compromitteren.
WordPress Server Configuraties
Nu weten we over permissies en hoe we ze kunnen lezen. Maar voordat we al onze machtigingen gaan wijzigen, moeten we eerst begrijpen hoe onze server is ingesteld. Omdat permissies te maken hebben met gebruikersaccounts en groepen, moeten we weten hoe onze WordPress website draait.
Er zijn veel verschillende server configuraties. Verschillende configuraties hebben verschillende toestemmingsmodi nodig om WordPress correct en veilig te laten werken. We zullen het hebben over slechts de twee meest voorkomende configuraties en de juiste permissies voor hen:
- Standaard server configuratie:
- U heeft een gebruikersaccount.
- Uw webserver draait als een andere gebruikersaccount.
- Gedeelde serverconfiguratie of
suEXEC
configuratie:- U hebt een gebruikersaccount.
- Anderen die de server gebruiken, hebben gebruikersaccounts en delen mogelijk dezelfde groep als uw gebruikersaccount.
- Uw webserver draait als de eigenaar van uw WordPress-bestanden.
Het belangrijkste verschil tussen deze twee is in hoe de webserver draait.
Toegangsrechten voor een standaard WordPress-serverconfiguratie
Standaard WordPress-configuraties vereisen een beetje meer werk dan gedeelde serverconfiguraties omdat de webserver geen relatie heeft met onze gebruikersaccount.
Bestand en Map Eigendom voor WordPress
Eerst moeten we het bestand en map eigenaarschap van onze WordPress bestanden aanpassen. We moeten zeker zijn van het volgende:
- dat uw gebruikersaccount de eigenaar is van alle WordPress bestanden en mappen,
- dat uw gebruikersaccount en het gebruikersaccount van de webserver tot dezelfde groep behoren.
Om de groepen te achterhalen waartoe uw gebruikersaccount behoort, kunt u dit commando in de terminal van uw server gebruiken:
groups
Om vervolgens de groepen te achterhalen waartoe uw webserver behoort, kunt u dit PHP-fragment tijdelijk in een van uw WordPress-scripts invoegen:
echo exec( 'groups' );
Als uw gebruiker en de webserver niet tot dezelfde groep behoren, kunt u het volgende commando in de terminal gebruiken om uw gebruiker aan een van de groepen van uw webserver toe te voegen:
sudo usermod -a -G <a-common-group-name> myuser
Tot slot, om er zeker van te zijn dat alles in onze WordPress map toebehoort aan onze gebruikersaccount en de gedeelde groep heeft die we zojuist hebben toegevoegd, voert u dit commando uit in uw WordPress map:
sudo find . -exec chown myuser:a-common-group-name {} +
Permissions for WordPress
Al onze bestanden en mappen zouden nu het juiste eigendom moeten hebben. Nu is het tijd om de toestemmingsmodi aan te passen. Om het eenvoudiger te maken, hoeft u alleen het volgende te onthouden:
- Alle bestanden moeten
664
. - Alle mappen moeten
775
. -
wp-config.php
moeten660
.
Hier volgt wat we proberen te bereiken met deze set toestemmingsmodi:
- Onze gebruikersaccount mag onze bestanden lezen en wijzigen.
- WordPress (via onze webserver) mag onze scripts lezen en wijzigen.
- WordPress mag bestanden en mappen maken, wijzigen of verwijderen.
- Anderen mogen onze databasegegevens in
wp-config.php
niet zien.
U denkt misschien dat het niet veilig is om WordPress volledige rechten op onze mappen te geven. Maak je geen zorgen – we doen dit omdat WordPress bepaalde functies nodig heeft om bestanden aan te maken en te wijzigen. WordPress staat ons toe om thema’s en plugins te uploaden en te verwijderen en zelfs scripts en stijlen te bewerken vanuit de administratieve back-end. Zonder dit soort toestemmingen zouden we elke keer handmatig thema’s en plugins moeten uploaden met behulp van FTP.
U kunt uw FTP-client gebruiken om de toestemmingsmodi te wijzigen, of u kunt de volgende commando’s in uw WordPress directory gebruiken om snel de toestemmingen van al uw bestanden en mappen aan te passen:
sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +sudo chmod 660 wp-config.php
Merk op dat sommige webservers strenger zijn dan andere. Als de jouwe streng is, dan kan het instellen van wp-config.php
op 660
ervoor zorgen dat je website niet meer werkt. Laat in dat geval 664
staan.
Toestemmingen voor een Gedeelde Server Configuratie of SuEXEC Configuratie
Toestemmingen voor gedeelde server configuraties zijn eenvoudiger te implementeren. We zullen niet stilstaan bij eigendom omdat de Web server draait als de eigenaar van onze bestanden en mappen. Omdat onze gebruikersaccount en de Web server dezelfde permissies delen (beide zijn eigenaar), kunnen we gelijk duiken in het wijzigen van de permissie modes:
- Alle bestanden moeten
644
. - Alle mappen moeten
755
. -
wp-config.php
moet600
.
Gelijk aan de vorige set toestemmingsmodi, zijn deze als volgt op te splitsen:
- Onze gebruikersaccount mag onze bestanden lezen en wijzigen.
- WordPress (via onze webserver en als accounteigenaar) mag onze scripts lezen en wijzigen.
- WordPress mag bestanden of mappen aanmaken, wijzigen of verwijderen.
- Anderen mogen onze databasegegevens in
wp-config.php
niet zien.
Opnieuw kunt u een FTP-client gebruiken om de toestemmingsmodi te wijzigen, of u kunt de volgende opdrachten in uw WordPress-map gebruiken om snel de toestemmingen van al uw bestanden en mappen aan te passen:
sudo find . -type f -exec chmod 644 {} +sudo find . -type d -exec chmod 755 {} +sudo chmod 600 wp-config.php
Gelijk aan de standaard WordPress-serverconfiguratie kan uw server strenger zijn dan anderen en toestaan dat wp-config.php
niet 600
is. In dat geval kunt u het aanpassen naar een mildere 640
; als dat nog steeds niet werkt, gebruik dan 644
.
Volg altijd deze richtlijnen en uw WordPress bestanden zouden veilig moeten zijn voor indringers.
Gemeenschappelijke valkuilen
Een veelgemaakte fout die mensen maken is om de uploads
map op 777
te zetten. Sommigen doen dit omdat ze een fout krijgen wanneer ze een afbeelding proberen te uploaden naar hun website, en 777
lost dit probleem snel op. Maar geef nooit ongelimiteerde toegang aan iedereen, anders maak je de webserver kwetsbaar voor aanvallen. Als u de richtlijnen in dit artikel volgt, dan zou u geen problemen moeten hebben met het uploaden van bestanden naar uw website.
Soms zal een plugin u echter vragen om een bestand in te stellen op 777
. In deze gevallen kunt u het tijdelijk op 777
zetten, maar zorg ervoor dat u het weer op de oorspronkelijke toestemmingsmodus zet als u klaar bent.
Conclusie
We hebben nu geleerd over de juiste toestemmingen en bestandseigendom van een WordPress website. We hebben ook geleerd om een toestemmingsmodus van 777
te vermijden, omdat het de webserver in gevaar brengt.