Oprávnění WordPressu – Jak nastavit správné souborové systémy a vlastnictví
O autorovi
Benjamin je zakladatel a hlavní vývojář společnosti Gambit. Je tvůrcem Page Builder Sandwich a Stackable – Ultimate Gutenberg Blocks. V jeho knihovně naleznete …Více oBenjamin↬
- 12 minut čtení
- WordPress,Servery,Bezpečnost,Techniky (WP)
- Uloženo pro offline čtení
- Sdílet na Twitteru, LinkedIn
Když lidé mluví o zabezpečení WordPressu, oprávnění a vlastnictví souborů jsou obvykle to poslední, na co myslí. Instalace bezpečnostních zásuvných modulů je dobrým zvykem a nutností pro každý web WordPress. Pokud však nejsou oprávnění souborového systému nastavena správně, většinu bezpečnostních opatření mohou narušitelé snadno obejít.
Oprávnění a vlastnictví jsou v instalacích WordPress poměrně důležité. Jejich správné nastavení na webovém serveru by mělo být první věcí, kterou po instalaci WordPressu uděláte. Špatně nastavená oprávnění mohou způsobit fatální chyby, které váš web zastaví. Nesprávná oprávnění mohou také ohrozit váš web a učinit jej náchylným k útokům.
Další čtení na SmashingMag:
- Co dělat, když vám vypadne web
- Jak si udržet pořádek v práci s kódováním
- Jak zjistit, proč váš web přestal fungovat
- 9 kroků ke spokojenému vztahu s poskytovatelem hostingu
Kromě bezpečnostních problémů může z nesprávné sady oprávnění a vlastnictví vyplývat řada dalších problémů. Setkali jste se někdy s prázdnou bílou obrazovkou při prvním pokusu o načtení webových stránek? Nebo jste někdy obdrželi chybové hlášení při pokusu o nahrání obrázků v nástroji pro nahrávání médií? Opravení oprávnění a vlastnictví souborů a složek často tyto typy problémů vyřeší.
V tomto článku vás naučíme vše o oprávněních a vlastnictví souborového systému WordPress: co to je, proč jsou důležitá a jak je nastavit. Dozvíte se několik základních zásad, kterými se řídím já, abych udržel svůj souborový systém v pořádku. Budeme se také zabývat dvěma nejběžnějšími konfiguracemi serveru WordPress. Vysvětlíme si, v čem se liší, a hlavně, jak pro každou z nich nastavit správná oprávnění a vlastnictví.
Terminál Vs. Klient FTP
V průběhu tohoto článku budeme ke změně oprávnění a vlastnictví používat terminál. Proč místo toho nepoužít klienta FTP? Důvodem je, že FTP je pro naše potřeby poněkud omezený. FTP lze použít k přenosu souborů a změně oprávnění k souborům a složkám, ale nelze jej použít ke změně nastavení vlastnictví.
Chcete-li provádět příkazy uvedené v tomto článku, musíte být přihlášeni k serveru pomocí příkazu SSH
. Pokud terminál a příkaz SSH
neznáte, můžete se o nich dozvědět v článku „Úvod do linuxových příkazů.“
Uživatelé a skupiny
Předtím, než začneme cokoli dalšího, si musíme v rychlosti říci, co jsou to uživatelé a skupiny, protože při definování oprávnění jdou ruku v ruce.
Zjednodušeně řečeno, uživatel je účet, který má přístup k počítači, a skupina je pouze identifikátor určité množiny uživatelů. To znamená, že při každém přenosu souborů pomocí protokolu FTP používáte na serveru uživatelský účet. A v závislosti na tom, jak váš hostitel nastavil váš účet, můžete vy (uživatel) patřit do jedné nebo více skupin. Uživatelé a skupiny se podobají uživatelům a rolím ve WordPressu. Obojí je koncepčně stejné, s tím rozdílem, že to první se používá na vašem serveru.
Uživatelé a skupiny jsou důležití, protože pomáhají určit oprávnění pro všechny naše soubory a složky. Vlastníci souboru by k němu obvykle měli plná práva; ostatní uživatelé, kteří patří do stejné skupiny, by k němu měli menší práva; zatímco všichni ostatní by k němu nemuseli mít žádná práva. Těmto oprávněním říkáme oprávnění.
Co jsou to oprávnění k souborům?
Oprávnění určují, co mohou uživatelé se souborem dělat. Oprávnění je reprezentováno sadou čísel, například 644
nebo 777
, označovanou jako režim oprávnění. Pokud jste již někdy používali zásuvné moduly ve WordPressu, pak jste s největší pravděpodobností byli některým z nich vyzváni, abyste změnili oprávnění souboru nebo adresáře, protože do něj zásuvný modul nemůže zapisovat. Změnou oprávnění souboru povolujete webovému serveru přístup k tomuto souboru nebo adresáři.
Představte si režim oprávnění jako sadu příkazů „kdo co může dělat“, v nichž každá číslice odpovídá části příkazu „kdo“:
- První číslice. Co může dělat uživatel účtu, který vlastní soubor
- Druhá číslice. Co mohou dělat ostatní uživatelské účty ve skupině vlastníka
- Třetí číslice. Co mohou dělat uživatelské účty všech ostatních (včetně návštěvníků webu)
Další číslice odpovídá části výroku „co“ a je součtem kombinace libovolných těchto číslic:
-
4
Číst soubor nebo číst názvy souborů ve složce -
2
Zapisovat nebo měnit soubor nebo měnit obsah složky -
1
Spouštět nebo spouštět soubor nebo přistupovat k souborům ve složce
Tyto číslice jsou oprávnění, která jsou přiřazena „kdo“ v režimu oprávnění. Všimněte si ve výše uvedeném seznamu, že oprávnění znamenají něco jiného pro soubory a složky.
Použití správného režimu oprávnění je poměrně důležité. Pro lepší ilustraci si opět představte uživatele a role ve WordPressu. Na webových stránkách WordPress mají přispěvatelé a správci různé sady oprávnění. Přispěvatelé mohou vytvářet nové příspěvky na blogu, ale nemohou přidávat zásuvné moduly. Naproti tomu správci mohou přidávat zásuvné moduly a také vytvářet příspěvky do blogu. Správci mohou dokonce měnit vzhled webu, pokud chtějí. Jasná hranice odděluje, co mohou uživatelé v různých rolích dělat. Stejné je to s režimy oprávnění, jen s tím rozdílem, že místo příspěvků na blogu a možností témat se zabýváme soubory a složkami na serveru.
Změna režimů oprávnění
Klienti FTP obvykle poskytují rozhraní, ve kterém můžete pohodlně změnit režim oprávnění souborů a složek. Zde je obrázek rozhraní v mém klientu FTP:
Ukázka rozhraní režimu oprávnění.
Pokud máte přístup k terminálu serveru, můžete ke změně režimu oprávnění souboru nebo složky použít také příkaz chmod
:
sudo chmod 644 <file>
Chcete-li změnit režimy oprávnění všech souborů nebo složek, použijte příkaz chmod
společně s příkazem find
. Pomocí tohoto příkazu můžete například změnit všechny soubory na 644
:
sudo find . -type f -exec chmod 644 {} +
Nebo pomocí tohoto příkazu můžete změnit všechny složky na 755
:
sudo find . -type d -exec chmod 755 {} +
Průvodce změnou režimů oprávnění najdete v části „Změna oprávnění souborů v kodexu WordPress“.
Rozdíl mezi 644 a 777
Podívejme se na některé režimy oprávnění a jejich vliv na náš web.
Co by znamenal skript PHP s režimem oprávnění 644
? Podle výše uvedeného vysvětlení, jak režimy oprávnění fungují, můžeme rozluštit, co tento režim umožňuje uživatelům s naším skriptem dělat:
- Právo vlastníka je „číst“ (4) + „zapisovat“ (2) =
6
- Právo skupiny vlastníka je „číst“ (4) =
4
- Právo všech ostatních je „číst“ (4) =
4
V prostém jazyce to znamená, že:
- pokud vlastníme skript, můžeme ho číst a upravovat;
- všichni ostatní ho mohou pouze číst.
Jak vidíme, 644
je vhodný režim oprávnění pro náš skript PHP. Můžeme v něm provádět změny a náš webový server ho může číst.
Nyní se podíváme na složky. Co kdybychom vlastnili složku, která má režim oprávnění 777
? Tento režim oprávnění lze rozdělit následovně:
- Právo vlastníka je „číst“ (4) + „zapisovat“ (2) + „spustit“ (1) =
7
- Právo skupiny vlastníka je „číst“ (4) + „zapisovat“ (2) + „spustit“ (1) =
7
- .
- Právo všech ostatních je „číst“ (4) + „zapisovat“ (2) + „spustit“ (1) =
7
To znamená, že
- kdokoli může získat seznam názvů souborů v naší složce;
- každý může vytvářet, upravovat a mazat libovolné soubory v naší složce;
- každý může přistupovat k souborům v naší složce.
Je zřejmé, že 777
je špatný režim oprávnění pro cokoli na našem webu WordPress, protože každý návštěvník by mohl přidávat soubory do našeho adresáře nebo dokonce mazat skripty. Co hůř, kdokoli by mohl vložit škodlivý kód a ohrozit náš web.
Konfigurace serveru WordPress
Teď už víme o oprávněních a o tom, jak je číst. Než však přistoupíme ke změně všech oprávnění, musíme pochopit, jak je náš server nastaven. Protože oprávnění se týkají uživatelských účtů a skupin, musíme vědět, jak naše webové stránky WordPress běží.
Existuje mnoho různých konfigurací serveru. Různé konfigurace potřebují různé sady režimů oprávnění, aby WordPress fungoval správně a bezpečně. Probereme si jen dvě nejběžnější konfigurace a správná oprávnění pro ně:
- Standardní konfigurace serveru:
- Máte uživatelský účet.
- Váš webový server běží jako jiný uživatelský účet.
- Sdílená konfigurace serveru nebo
suEXEC
konfigurace:- Máte uživatelský účet.
- Jiné osoby, které používají server, mají uživatelské účty a mohou sdílet stejnou skupinu jako váš uživatelský účet.
- Váš webový server běží jako vlastník souborů WordPress.
Hlavní rozdíl mezi těmito dvěma způsoby je v tom, jak webový server běží.
Oprávnění pro standardní konfiguraci serveru WordPress
Standardní konfigurace WordPress vyžaduje trochu více práce než konfigurace sdíleného serveru, protože webový server nemá žádný vztah k našemu uživatelskému účtu.
Vlastnictví souborů a složek pro WordPress
Nejprve musíme upravit vlastnictví souborů a složek našich souborů WordPress. Budeme se muset ujistit o následujícím:
- že váš uživatelský účet je vlastníkem všech souborů a složek WordPress,
- že váš uživatelský účet a uživatelský účet webového serveru patří do stejné skupiny.
Pro zjištění skupin, do kterých patří váš uživatelský účet, můžete v terminálu serveru použít tento příkaz:
groups
Pro zjištění skupin, do kterých patří váš webový server, můžete do jednoho ze skriptů WordPress dočasně vložit tento úryvek PHP:
echo exec( 'groups' );
Pokud váš uživatel a webový server nepatří do stejné skupiny, můžete pomocí následujícího příkazu v terminálu přidat svého uživatele do jedné ze skupin webového serveru:
sudo usermod -a -G <a-common-group-name> myuser
Nakonec, abychom se ujistili, že vše v naší složce WordPress patří našemu uživatelskému účtu a má sdílenou skupinu, kterou jsme právě přidali, proveďte ve složce WordPress tento příkaz:
sudo find . -exec chown myuser:a-common-group-name {} +
Právnění pro WordPress
Všechny naše soubory a složky by nyní měly mít správné vlastnictví. Nyní je čas upravit režimy oprávnění. Pro zjednodušení si stačí zapamatovat následující:
- Všechny soubory by měly být
664
. - Všechny složky by měly být
775
. -
wp-config.php
měly by být660
.
Takto se snažíme dosáhnout této sady režimů oprávnění:
- Náš uživatelský účet může číst a upravovat naše soubory.
- WordPress (prostřednictvím našeho webového serveru) může číst a upravovat naše skripty.
- WordPress může vytvářet, upravovat nebo mazat soubory a složky.
- Jiné osoby nesmí vidět naše přihlašovací údaje do databáze v
wp-config.php
.
Možná si říkáte, že povolit WordPressu plná práva k našim složkám není bezpečné. Nemějte obavy – děláme to proto, že WordPress potřebuje určité funkce k vytváření a úpravě souborů. WordPress nám umožňuje nahrávat a odstraňovat témata a zásuvné moduly a dokonce upravovat skripty a styly z administrátorského backendu. Bez tohoto typu oprávnění bychom museli pokaždé ručně nahrávat témata a zásuvné moduly pomocí FTP.
Pro změnu režimů oprávnění můžete použít klienta FTP nebo můžete použít následující příkazy v adresáři WordPress a rychle upravit oprávnění všech svých souborů a složek:
sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +sudo chmod 660 wp-config.php
Upozorňujeme, že některé webové servery jsou přísnější než jiné. Pokud je ten váš přísný, pak nastavení wp-config.php
na 660
může zabránit fungování vašeho webu. V takovém případě jej ponechte jako 664
.
Právnění pro konfiguraci sdíleného serveru nebo konfiguraci SuEXEC
Právnění pro konfiguraci sdíleného serveru se implementují snadněji. Nebudeme se zabývat vlastnictvím, protože webový server běží jako vlastník našich souborů a složek. Protože náš uživatelský účet a webový server sdílejí stejná oprávnění (oba jsou vlastníky), můžeme se rovnou vrhnout na úpravu režimů oprávnění:
- Všechny soubory by měly být
644
. - Všechny složky by měly být
755
. -
wp-config.php
měly by být600
.
Podobně jako předchozí sada režimů oprávnění se rozdělují takto:
- Náš uživatelský účet může číst a upravovat naše soubory.
- WordPress (prostřednictvím našeho webového serveru a jako vlastník účtu) může číst a upravovat naše skripty.
- WordPress může vytvářet, upravovat nebo mazat soubory a složky.
- Jiné osoby nesmí vidět naše přihlašovací údaje do databáze v
wp-config.php
.
Pro změnu režimů oprávnění můžete opět použít klienta FTP nebo můžete použít následující příkazy v adresáři WordPress a rychle upravit oprávnění všech svých souborů a složek:
sudo find . -type f -exec chmod 644 {} +sudo find . -type d -exec chmod 755 {} +sudo chmod 600 wp-config.php
Podobně jako standardní konfigurace serveru WordPress může být váš server přísnější než ostatní a nemusí povolit, aby wp-config.php
bylo 600
. V takovém případě ji můžete upravit na mírnější 640
; pokud ani to nepomůže, použijte 644
.
Vždy dodržujte tyto pokyny a vaše soubory WordPressu by měly být v bezpečí před vetřelci.
Obvyklé nástrahy
Častou chybou, kterou lidé dělají, je nastavení složky uploads
na 777
. Někteří to dělají proto, že při pokusu o nahrání obrázku na jejich webové stránky dojde k chybě, a 777
tento problém rychle odstraní. Nikdy však nedávejte neomezený přístup všem, jinak učiníte webový server zranitelným vůči útokům. Pokud se budete řídit pokyny uvedenými v tomto článku, neměli byste mít s nahráváním souborů na své webové stránky žádné problémy.
Občas se však stane, že zásuvný modul bude požadovat nastavení souboru na 777
. V těchto případech jej můžete dočasně nastavit na 777
, ale nezapomeňte jej po dokončení nastavit zpět do původního režimu oprávnění.
Závěr
Nyní jsme se dozvěděli o správných oprávněních a vlastnictví souborů na webu WordPress. Také jsme se naučili vyhýbat se režimu oprávnění 777
, protože ohrožuje webový server.