Articles

WordPress Permissions – How To Set Up Proper Filesystems And Ownerships

  • 12 min read
  • WordPress,Servrar,Säkerhet,Tekniker (WP)
  • Sparad för läsning offline
  • Dela på Twitter, LinkedIn
När folk pratar om WordPress-säkerhet är filbehörigheter och äganderätt oftast det sista de tänker på. Att installera säkerhetstillägg är en bra metod och ett måste för varje WordPress-webbplats. Men om filsystemets behörigheter inte är korrekt inställda kan de flesta av dina säkerhetsåtgärder lätt kringgås av inkräktare.

När folk pratar om WordPress-säkerhet är filbehörigheter och äganderätt vanligtvis det sista de tänker på. Att installera säkerhetstillägg är en bra metod och ett måste för varje WordPress-webbplats. Men om filsystemets behörigheter inte är korrekt inställda kan de flesta av dina säkerhetsåtgärder lätt kringgås av inkräktare.

wordpress permissions

Rättigheter och äganderätt är ganska viktiga i WordPress-installationer. Att ställa in dessa korrekt på din webbserver bör vara det första du gör efter installationen av WordPress. Om du har fel uppsättning behörigheter kan det leda till ödesdigra fel som stoppar din webbplats. Felaktiga behörigheter kan också äventyra din webbplats och göra den sårbar för attacker.

Ytterligare läsning på SmashingMag:

  • Vad du ska göra när din webbplats går ner
  • Hur du håller ditt kodningsarbetsflöde organiserat
  • Hur du tar reda på varför din webbplats slutade att fungera
  • 9 steg för att få ett lyckligt förhållande till din webbhotellleverantör

Bortsett från säkerhetsproblemen kan ett antal andra problem härröra från att ha en felaktig uppsättning av behörigheter och ägande. Har du någonsin stött på en tom vit skärm när du försöker ladda din webbplats för första gången? Eller har du någonsin fått felmeddelanden när du har försökt ladda upp bilder i media uploader? Att korrigera behörigheter och äganderätt för dina filer och mappar löser ofta dessa typer av problem.

I den här artikeln kommer vi att lära dig allt om WordPress filsystems behörigheter och äganderätt: vad de är, varför de är viktiga och hur du ställer in dem. Du kommer att lära dig några grundläggande principer som jag följer för att hålla mitt filsystem intakt. Vi kommer också att täcka de två vanligaste WordPress-serverkonfigurationerna. Vi kommer att förklara hur de skiljer sig åt och, ännu viktigare, hur man ställer in rätt behörigheter och ägarskap för var och en av dem.

Terminal Vs. FTP-klient

Under den här artikeln kommer vi att använda terminalen för att ändra behörigheter och ägarskap. Varför inte använda en FTP-klient i stället? Anledningen är att FTP är lite begränsat för våra behov. FTP kan användas för att överföra filer och ändra fil- och mappbehörigheter, men det kan inte användas för att ändra ägarinställningar.

För att kunna utföra de kommandon som anges i den här artikeln måste du vara inloggad på din server med kommandot SSH. Om du inte är bekant med terminalen och SSH kan du lära dig mer om dem i artikeln ”Introduktion till Linuxkommandon.”

Användare och grupper

Förut måste vi snabbt prata om vad användare och grupper är, eftersom dessa går hand i hand när man definierar behörigheter.

För att uttrycka det enkelt så är en användare ett konto som har tillgång till datorn, och en grupp är bara en identifierare för en viss uppsättning användare. Detta innebär att varje gång du överför filer med FTP använder du ett användarkonto på din server. Och beroende på hur din värd har konfigurerat ditt konto kan du (användaren) tillhöra en eller flera grupper. Användare och grupper är som användare och roller i WordPress. Båda är konceptuellt sett samma sak, förutom att den förstnämnda används på din server.

Användare och grupper är viktiga eftersom de hjälper till att identifiera privilegier för alla våra filer och mappar. Ägare av en fil har normalt sett fullständiga privilegier på den, andra användare som tillhör samma grupp har färre privilegier på den, medan alla andra kanske inte har några privilegier på den. Dessa privilegier är vad vi kallar för behörigheter.

Vad är filbehörigheter?

Rättigheterna bestämmer vad användarna kan göra med en fil. En behörighet representeras av en uppsättning siffror, till exempel 644 eller 777, som kallas behörighetsläge. Om du har använt insticksprogram i WordPress tidigare har du med största sannolikhet blivit ombedd av några av dem att ändra behörigheterna för en fil eller katalog eftersom insticksprogrammet inte kan skriva till den. Genom att ändra filens behörigheter tillåter du webbservern att få tillgång till filen eller mappen.

Tänk på ett behörighetsläge som en uppsättning ”vem kan göra vad”-uttalanden, där varje siffra motsvarar ”vem”-delen av uttalandet:

  • Första siffran. Vad användaren av det konto som äger filen kan göra
  • Andra siffran. Vad andra användarkonton i ägarens grupp kan göra
  • Tredje siffran. Vad användarkontona för alla andra (inklusive besökare på webbplatsen) kan göra

Nästan motsvarar siffran ”vad” i påståendet och är en summa av en kombination av alla dessa siffror:

  • 4 Läsa en fil eller läsa namnen på filerna i en mapp
  • 2 Skriva eller ändra en fil eller ändra innehållet i en mapp
  • 1 Utföra eller köra en fil eller få åtkomst till filerna i en mapp

Dessa siffror är de rättigheter som tilldelas ”who” i behörighetsläget. Observera i listan ovan att privilegier betyder något annat för filer och mappar.

Det är ganska viktigt att använda rätt behörighetsläge. För att bättre illustrera detta kan du återigen tänka på användare och roller i WordPress. På en WordPress-webbplats har bidragsgivare och administratörer olika uppsättningar funktioner. Bidragsgivare kan skapa nya blogginlägg, men de kan inte lägga till plugins. Administratörer, å andra sidan, kan lägga till plugins och även skapa blogginlägg. Administratörer kan även ändra webbplatsens utseende om de vill. En tydlig linje skiljer vad användare i olika roller kan göra. Detta är samma sak med behörighetslägen, förutom att vi i stället för att hantera blogginlägg och temaalternativ har att göra med filer och mappar på servern.

Ändra behörighetslägen

FTP-klienter tillhandahåller vanligtvis ett gränssnitt där du bekvämt kan ändra behörighetsläget för dina filer och mappar. Här är en skärmdump av gränssnittet i min FTP-klient:

Example of a permission mode interface.
Exempel på ett gränssnitt för behörighetsläge.

Om du har tillgång till serverns terminal kan du också använda kommandot chmod för att ändra behörighetsläget för en fil eller mapp:

sudo chmod 644 <file>

Om du vill ändra behörighetsläget för alla filer eller mappar använder du chmod tillsammans med kommandot find. Du kan till exempel använda detta för att ändra alla filer till 644:

sudo find . -type f -exec chmod 644 {} +

Och använda detta för att ändra alla dina mappar till 755:

sudo find . -type d -exec chmod 755 {} +

Se ”Changing File Permissions in the WordPress Codex” för att få en vägledning om hur du ändrar behörighetslägen.

Skillnaden mellan 644 och 777

Låt oss titta på några behörighetslägen och hur de påverkar vår webbplats.

Vad betyder ett PHP-skript med behörighetsläget 644? Efter förklaringen ovan om hur behörighetslägen fungerar kan vi tyda vad det här läget tillåter användare att göra med vårt skript:

  • Ägarens rättigheter är ”läsa” (4) + ”skriva” (2) = 6
  • Ägarens grupprättigheter är ”läsa” (4) = 4
  • Alla andras rättigheter är ”läsa” (4) = 4

I klartext betyder det följande:

  • Om vi äger skriptet får vi läsa och ändra det;
  • Alla andra får bara läsa det.

Som vi ser är 644 ett bra behörighetsläge för vårt PHP-skript. Vi kan göra ändringar i det och vår webbserver kan läsa det.

Nu ska vi titta på mappar. Vad händer om vi ägde en mapp som hade behörighetsläget 777? Detta behörighetsläge kan delas upp på följande sätt:

  • Ägarens rättigheter är ”read” (4) + ”write” (2) + ”execute” (1) = 7
  • Ägarens grupprättigheter är ”read” (4) + ”write” (2) + ”execute” (1) = 7
  • Alla andras privilegier är ”read” (4) + ”write” (2) + ”execute” (1) = 7

Detta innebär att

  • någon kan få en lista över filnamnen i vår mapp;
  • någon kan skapa, ändra och radera alla filer i vår mapp;
  • någon kan få tillgång till filerna i vår mapp.

Det är uppenbart att 777 är ett dåligt behörighetsläge för något på vår WordPress-webbplats eftersom alla besökare skulle kunna lägga till filer i vår katalog eller till och med radera skript. Ännu värre är att vem som helst skulle kunna lägga in skadlig kod och äventyra vår webbplats.

WordPress Server Configurations

Nu vet vi om behörigheter och hur man läser dem. Men innan vi fortsätter att ändra alla våra behörigheter måste vi förstå hur vår server är konfigurerad. Eftersom behörigheter handlar om användarkonton och grupper måste vi veta hur vår WordPress-webbplats fungerar.

Det finns många olika serverkonfigurationer. Olika konfigurationer behöver olika uppsättningar av behörighetslägen för att WordPress ska fungera korrekt och säkert. Vi ska bara tala om de två vanligaste konfigurationerna och rätt behörigheter för dem:

  • Standardserverkonfiguration:
    • Du har ett användarkonto.
    • Din webbserver körs som ett annat användarkonto.
  • Delad serverkonfiguration eller suEXEC konfiguration:
    • Du har ett användarkonto.
    • Andra personer som använder servern har användarkonton och kan dela samma grupp som ditt användarkonto.
    • Din webbserver körs som ägaren till dina WordPress-filer.

Den största skillnaden mellan dessa två är hur webbservern körs.

Handlingar för en standard WordPress-serverkonfiguration

Standard WordPress-konfigurationer kräver lite mer arbete än delade serverkonfigurationer eftersom webbservern inte har någon relation till vårt användarkonto.

Fil- och mappinnehav för WordPress

Först måste vi justera fil- och mappinnehav för våra WordPress-filer. Vi måste försäkra oss om följande:

  • att ditt användarkonto är ägare till alla WordPress-filer och mappar,
  • att ditt användarkonto och webbserverns användarkonto tillhör samma grupp.

För att ta reda på vilka grupper ditt användarkonto tillhör kan du använda det här kommandot i serverns terminal:

groups

För att ta reda på vilka grupper din webbserver tillhör kan du tillfälligt infoga det här PHP-snippet i ett av dina WordPress-skript:

echo exec( 'groups' );

Om din användare och webbservern inte tillhör samma grupp kan du använda följande kommando i terminalen för att lägga till din användare i en av webbserverns grupper:

sudo usermod -a -G <a-common-group-name> myuser

För att säkerställa att allt i vår WordPress-mapp tillhör vårt användarkonto och har den delade gruppen som vi just lagt till, utför det här kommandot i din WordPress-mapp:

sudo find . -exec chown myuser:a-common-group-name {} +

Permissions for WordPress

Alla våra filer och mappar bör nu ha rätt ägarskap. Nu är det dags att justera behörighetslägena. För att förenkla behöver du bara komma ihåg följande:

  • Alla filer ska vara 664.
  • Alla mappar ska vara 775.
  • wp-config.php ska vara 660.

Här är vad vi försöker uppnå med den här uppsättningen behörighetslägen:

  • Vårt användarkonto får läsa och ändra våra filer.
  • WordPress (via vår webbserver) kan läsa och ändra våra skript.
  • WordPress kan skapa, ändra eller ta bort filer och mappar.
  • Andra personer får inte se våra databasuppgifter i wp-config.php.

Du kanske tänker att det inte är säkert att låta WordPress få fullständiga rättigheter med våra mappar. Oroa dig inte – vi gör detta eftersom WordPress behöver vissa funktioner för att skapa och ändra filer. WordPress låter oss ladda upp och ta bort teman och plugins och till och med redigera skript och stilar från den administrativa baksidan. Utan den här typen av behörighet skulle vi behöva ladda upp teman och plugins manuellt varje gång med hjälp av FTP.

Du kan använda din FTP-klient för att ändra behörighetslägena, eller så kan du använda följande kommandon i din WordPress-katalog för att snabbt justera behörigheterna för alla dina filer och mappar:

sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +sudo chmod 660 wp-config.php

Bemärk att vissa webbservrar är strängare än andra. Om din är sträng kan det hända att din wp-config.php ställs in till 660 och att din webbplats inte fungerar. I det här fallet kan du bara lämna det som 664.

Handlingar för en delad serverkonfiguration eller SuEXEC-konfiguration

Handlingar för delade serverkonfigurationer är lättare att implementera. Vi kommer inte att uppehålla oss vid äganderätten eftersom webbservern körs som ägare till våra filer och mappar. Eftersom vårt användarkonto och webbservern delar samma behörigheter (båda är ägare) kan vi dyka rakt in och ändra behörighetslägena:

  • Alla filer ska vara 644.
  • Alla mappar ska vara 755.
  • wp-config.php ska vara 600.

Som i den tidigare uppsättningen behörighetslägen är dessa uppdelade enligt följande:

  • Vårt användarkonto får läsa och ändra våra filer.
  • WordPress (via vår webbserver och i egenskap av kontoinnehavare) får läsa och ändra våra skript.
  • WordPress kan skapa, ändra eller ta bort filer eller mappar.
  • Andra personer får inte se våra databasreferenser i wp-config.php.

Du kan återigen använda en FTP-klient för att ändra behörighetslägena, eller så kan du använda följande kommandon i din WordPress-katalog för att snabbt justera behörigheterna för alla dina filer och mappar:

sudo find . -type f -exec chmod 644 {} +sudo find . -type d -exec chmod 755 {} +sudo chmod 600 wp-config.php

I likhet med standardkonfigurationen för WordPress-servrar kan det hända att din server är strängare än andra och att den inte tillåter wp-config.php att vara 600. I det här fallet kan du justera den till en mildare 640; om det fortfarande inte fungerar, använd då 644.

Följ alltid dessa riktlinjer och dina WordPress-filer bör hållas säkra från inkräktare.

Gemensamma fallgropar

Ett vanligt misstag som folk gör är att ställa in mappen uploads till 777. Vissa gör detta för att de får ett fel när de försöker ladda upp en bild till sin webbplats, och 777 löser snabbt problemet. Men ge aldrig obegränsad åtkomst till alla, annars gör du webbservern sårbar för attacker. Om du följer de riktlinjer som behandlas i den här artikeln bör du inte ha några problem med att ladda upp filer till din webbplats.

I vissa fall kommer dock en insticksmodul att begära att du ställer in en fil till 777. Vid dessa tillfällen kan du tillfälligt ställa in den till 777, men se till att ställa tillbaka den till det ursprungliga behörighetsläget när du är klar.

Slutsats

Vi har nu lärt oss om korrekta behörigheter och filägarskap för en WordPress-webbplats. Vi har också lärt oss att undvika ett behörighetsläge 777 på grund av hur det äventyrar webbservern.