Wie met WordPress werkt en een eigen server beheert, loopt er vroeg of laat tegenaan: bestandsrechten.
Plugins die niet willen installeren, een thema dat je niet kunt uploaden, of SFTP dat ineens “permission denied” roept. Het hoort er een beetje bij.
Vooral als je werkt met een combinatie van:
- SSH
- SFTP
- WordPress updates
- webserver processen (www-data)
dan kan het zomaar gebeuren dat bestanden door de verkeerde gebruiker worden aangemaakt. WordPress draait meestal onder de webserver-gebruiker (www-data), terwijl jij via SFTP inlogt met een andere gebruiker. En dan begint het feest.
Gelukkig is het probleem meestal eenvoudig op te lossen als je weet hoe de rechtenstructuur hoort te zijn.
De ideale WordPress rechtenstructuur
Op de meeste Linux servers werkt deze combinatie het beste:
Owner: jouw servergebruiker
Group: www-data
Bijvoorbeeld:
owner = serveradmin
group = www-data
Waarom dit goed werkt:
- Jij kunt via SFTP bestanden uploaden en wijzigen
- De webserver (
www-data) kan plugins, uploads en updates schrijven - Beide systemen werken dus samen zonder conflicten
Stap 1 – Eigenaarschap goed zetten
Ga eerst naar de directory van je website:
cd /pad/naar/jouwsite.dev
Daarna zet je het eigenaarschap goed:
sudo chown -R serveradmin:www-data .
Dit zorgt ervoor dat:
- jij eigenaar bent van de bestanden
- de webserver nog steeds toegang heeft
Stap 2 – Rechten voor mappen
Mappen moeten meestal 775 zijn.
sudo find . -type d -exec chmod 775 {} \;
Dit betekent:
- eigenaar kan lezen en schrijven
- groep kan lezen en schrijven
- anderen kunnen lezen
Stap 3 – Rechten voor bestanden
Bestanden horen meestal 664 te zijn.
sudo find . -type f -exec chmod 664 {} \;
Dat voorkomt dat bestanden onnodig uitvoerbaar worden.
Stap 4 – Controleer wp-content
De belangrijkste WordPress map is natuurlijk:
wp-content
Daarin staan:
- themes
- plugins
- uploads
Controleer bijvoorbeeld:
ls -ld wp-content
Je wilt ongeveer zoiets zien:
drwxrwxr-x serveradmin www-data
Stap 5 – FS_METHOD instellen
Als WordPress vraagt om FTP-gegevens bij updates, kun je dit oplossen in wp-config.php.
Voeg toe:
define('FS_METHOD', 'direct');
Dan kan WordPress direct bestanden schrijven zonder FTP.
Kleine beveiligingstip
Je kunt wp-config.php iets veiliger zetten:
chmod 640 wp-config.php
of
chmod 600 wp-config.php
Waarom dit probleem zo vaak voorkomt
De meeste permission-problemen ontstaan doordat bestanden worden aangemaakt door verschillende processen:
| Proces | Gebruiker |
|---|---|
| WordPress / PHP | www-data |
| SFTP | jouw gebruiker |
| SSH scripts | jouw gebruiker |
Als deze niet goed op elkaar zijn afgestemd, krijg je de bekende foutmeldingen zoals:
- Permission denied
- Could not create directory
- Upload failed
Mijn standaard routine
Wanneer ik een nieuwe WordPress site installeer, zet ik meestal meteen alles goed met deze drie commando’s:
sudo chown -R serveradmin:www-data /var/www/site
sudo find /pad/naar/jouwsitesite -type d -exec chmod 775 {} \;
sudo find /pad/naar/jouwsite -type f -exec chmod 664 {} \;
Daarna heb ik zelden nog problemen met uploads of updates.
Tot slot
Bestandsrechten blijven een beetje een klassiek Linux dingetje waar je als WordPress gebruiker vroeg of laat tegenaan loopt. Maar als je de juiste structuur gebruikt, verdwijnen de meeste problemen vanzelf.
Hopelijk helpt dit anderen ook die ineens tegen mysterieuze WordPress “permission” fouten aanlopen.
Als iemand nog andere setups of tips heeft voor WordPress servers, laat het vooral weten!