Jak fungují uživatelé a skupiny v Linuxu

Web najednou vrací chybu 403 Forbidden. WordPress hlásí, že se mu nepodařilo vytvořit adresář. Po nahrání souborů přes terminál web přestal fungovat. Ve všech třech případech může být příčina stejná – práva k souborům.

Práva jsou způsob, jakým Linux rozhoduje, kdo smí soubor přečíst, změnit nebo spustit. Zapisují se trojicí čísel, která zvenčí vypadá jako náhodný kód. Stojí za ní ale přehledná logika, a jakmile ji jednou uvidíte, poznáte podle čísel na první pohled, jestli je se souborem něco v nepořádku.

V tomto návodu si projdeme, jak se práva čtou, kdo je vlastníkem souborů vašeho webu na našich serverech, jaké hodnoty má web mít nastavené a jak je změníte – přes FTP klienta i z příkazové řádky.

Rychlý přehled pro pokročilé

Tato část slouží pouze pro ověření pro velmi zkušené uživatele, kteří si chtějí pouze ověřit postup a nepotřebují číst celý článek. Pro všechny ostatní doporučujeme pokračovat další sekcí.

  • Webhosting a VPS – doporučené hodnoty: složky 755, soubory 644. Hodnotu 777 web nepotřebuje.
  • Webhosting a VPS – změna práv bez terminálu: jedině FTP klient. Správce souborů práva měnit neumí ani v Zákaznickém portálu, ani ve VPS Centru.
  • Webhosting a VPS – vlastník ve výpisu FTP klienta: zobrazuje se jméno přihlášeného FTP účtu, ne skutečný vlastník souboru.

Co je dobré vědět předem

Práva a vlastnictví jsou dvě různé věci a vyplatí se je od začátku oddělit. Práva říkají, co se se souborem smí dělat. Vlastnictví říká, koho se první část práv týká. Změna jedné z nich tu druhou neovlivní a řada potíží vzniká právě tím, že se opraví jen jedna polovina problému.

Na webhostingu vystačíte s právy. Vlastnictví za vás řeší server a soubory nahrané přes FTP dostanou správného vlastníka samy. Na VPS máte pod kontrolou obojí, a s tím i možnost si web rozbít. Stane se to ve chvíli, kdy soubory na server přijdou jinou cestou než přes FTP – například rozbalením archivu v terminálu pod uživatelem root.

Co budete potřebovat

  • Přístup na FTP (povinné) – bez terminálu se práva mění jedině přes FTP klienta. Kde najdete jméno a heslo, popisuje Jak zjistím a změním jméno a heslo na FTP.
  • FTP klient v počítači (povinné) – návod ukazuje Cyberduck a FileZillu, stejnou funkci ale nabízejí i ostatní klienti. S připojením poradí Jak se připojit na FTP.
  • Přístup na SSH pod uživatelem root (podmíněné) – jen na VPS a jen tehdy, když potřebujete změnit vlastníka nebo upravit velké množství souborů najednou. Vlastníka totiž může měnit pouze root. Webhosting SSH nemá. Základy shrnuje Kompletní průvodce SSH.

Časový odhad: Změna práv u jednoho souboru zabere ve FTP klientovi necelou minutu. Přenastavení celého webu přes SSH zvládnete dvěma příkazy, tentýž úkon přes FTP klienta může u rozsáhlého webu trvat i desítky minut.

Jak zjistíte, jakou verzi VPS Centra máte

Verzi poznáte podle vzhledu rozhraní.

VPS Centrum V3 má svislé menu vlevo (Domény, Databáze, Zabezpečení a další) a číslo verze vpravo dole.

VPS Centrum V2 má vodorovné menu nahoře (Domény, Správa serveru, Přehledy a další) a číslo verze v patičce. Rozlišení potřebujete u vlastníka souborů, protože každá verze používá jiného uživatele, a tím pádem i jinou hodnotu v příkazu chown.

Skok rovnou k postupu

Chci rozumět tomu, co ta čísla znamenají → Jak se práva čtou

Chci vědět, jaké hodnoty má mít můj web → Jaká práva mají mít soubory a složky webu

Chci zjistit, komu soubory patří → Kdo je vlastníkem souborů vašeho webu

Chci práva změnit bez terminálu → Jak práva změnit přes FTP klienta – webhosting, VPS

Chci práva nebo vlastníka změnit přes SSH → Jak práva a vlastníka změnit přes SSH na VPS

Jak se práva čtou

Vlastník, skupina a ostatní

Každý soubor i každá složka v Linuxu patří jednomu uživateli a jedné skupině. Podle toho se všichni, kdo se k souboru dostanou, dělí do tří kategorií:

  • Vlastník – uživatel, kterému soubor patří.
  • Skupina – uživatelé, kteří jsou členy skupiny přiřazené k souboru.
  • Ostatní – všichni zbývající.

Každá z těch tří kategorií má vlastní sadu práv, na sobě nezávislou. Proto se práva zapisují třemi čísly za sebou: první patří vlastníkovi, druhé skupině a třetí ostatním.

Uživatelé i skupiny mají kromě jména také číslo. U uživatele se mu říká UID, u skupiny GID. Uživatel root, tedy správce serveru s právy na všechno, má vždy UID 0. Nízká čísla patří systémovým účtům, běžní uživatelé na Debianu začínají od 1000. V praxi si vystačíte se jmény – čísla ve výpisech uvidíte jen tam, kde systém k číslu nedohledá odpovídající jméno.

Co znamenají r, w a x

Práva jsou tři a u souboru znamenají něco jiného než u složky. Tenhle rozdíl je přitom podstatný, takže stojí za to si ho projít.

PrávoU souboruU složky
r – readpřečíst obsah souboruvypsat, co ve složce je
w – writezměnit nebo smazat obsah souborupřidávat a mazat soubory ve složce
x – executespustit soubor jako programvstoupit do složky a dostat se k souborům uvnitř

U složek je právo x zásadní. Bez něj se do složky nedostane ani ten, kdo má právo číst, a webserver na takové složce skončí chybou 403. Platí to pro celou cestu – stačí jediná složka bez práva x a nedostupné bude všechno pod ní.

Jak se z písmen stanou čísla

Každé z těch tří práv má číselnou hodnotu: r je 4, w je 2 a x je 1. Práva jedné kategorie se sečtou a výsledkem je jedna číslice.

  • 4 + 2 + 1 = 7 – čtení, zápis i spuštění
  • 4 + 2 = 6 – čtení a zápis
  • 4 + 1 = 5 – čtení a spuštění

Samotná 4 znamená jen čtení a 0 žádné právo. Trojice pak vznikne poskládáním hodnot pro vlastníka, skupinu a ostatní v tomto pořadí. Zápis 755 odpovídá písmenné podobě rwxr-xr-x, se kterou se potkáte ve výpisech přímo na serveru.

ZápisVlastníkSkupinaOstatníKde se s tím potkáte
7557 – vše5 – čtení a vstup5 – čtení a vstupsložky webu
6446 – čtení a zápis4 – čtení4 – čtenísoubory webu
6006 – čtení a zápis0 – nic0 – nicsoubory s citlivým obsahem
7777 – vše7 – vše7 – všehodnota, které se vyhněte

Jaká práva mají mít soubory a složky webu

Pro běžný web platí dvě hodnoty: 755 pro složky a 644 pro soubory. Webserver tak všechno přečte a do složek vstoupí, zapisovat ale může jedině vlastník.

Že to stačí i pro weby, které zapisují samy do sebe, plyne z toho, pod jakým uživatelem běží PHP. Na webhostingu a ve VPS Centru V3 běží pod doménovým uživatelem, ve VPS Centru V2 pod uživatelem www-data – a právě tomuto účtu mají soubory webu patřit. Právo zápisu z první trojice čísel se tak vztahuje na PHP. WordPress si do složky wp-content nahraje obrázek i při hodnotě 755 a rozšiřovat práva skupině nebo ostatním k tomu není potřeba.

Na nově založené doméně jsou práva nastavená správně už od začátku. Ručně do nich sáhnete až ve chvíli, kdy se soubory na server dostanou jinak než přes FTP nebo než je vytvoří samotná aplikace.

Hodnota 777 dává právo zápisu vlastníkovi, skupině i všem ostatním. Webu to fungovat nebrání, jenže nic z toho navíc nepotřebuje – zapisuje jako vlastník, a ten má právo zápisu už v hodnotě 755. Pokud práva 777 na webu máte, projděte si sekci Máme na webu nastavená práva 777 a nevíme, jestli to vadí.

Kdo je vlastníkem souborů vašeho webu

Vlastník rozhoduje o tom, koho se týká první trojice práv. U webu je to podstatné proto, že PHP běží pod jedním konkrétním účtem a soubory webu mají patřit právě jemu. Když patří někomu jinému, web do nich nezapíše a aktualizace, nahrávání obrázků nebo instalace rozšíření začnou selhávat. Kdo je vlastníkem, se u nás liší podle toho, kde web běží.

Kromě uživatelů, pod kterými běží weby, má server ještě řadu systémových účtů pro jednotlivé služby, například pro poštu, FTP nebo databázi. Se soubory vašeho webu nemají co do činění.

Vlastník na webhostingu a ve VPS Centru V3

Při aktivaci hostingu domény vznikne na serveru systémový uživatel pojmenovaný podle domény, kde se tečky nahradí pomlčkami. Pro doménu example.cz je to uživatel example-cz a stejně se jmenuje i jeho skupina. Přihlásit se pod ním nedá – nemá přiřazený shell ani domovský adresář a slouží výhradně k tomu, aby soubory webu měly svého majitele.

Pod tímto uživatelem běží i PHP-FPM, každá doména ve vlastním procesu. Proces jednoho webu tak nemůže zapisovat do souborů jiného.

Webhosting SSH přístup nemá, takže tam vlastníka nezjistíte ani nezměníte. Nevadí to, protože soubory nahrané přes FTP dostanou správného vlastníka automaticky. Pokud máte podezření, že je s vlastnictvím něco v nepořádku, nastaví ho na požádání naše podpora.

VPS Centrum V3 vlastníka v rozhraní nikde nezobrazuje, takže ho zjistíte jedině přes SSH. Subdomény tady vlastního uživatele nemají a sdílejí uživatele nadřazené domény, takže vlastníka souborů subdomény hledejte pod jménem hlavní domény.

ls -la /www/hosting/example.cz/www/

Ve výpisu je třetí sloupec vlastník a čtvrtý skupina. Úplně první sloupec ukazuje práva v písmenné podobě: úvodní d označuje složku, po něm následují tři trojice rwx pro vlastníka, skupinu a ostatní.

drwxr-xr-x  5 example-cz example-cz  4096 wp-content
-rw-r--r--  1 example-cz example-cz  7371 index.php

Vlastník ve VPS Centru V2

Ve VPS Centru V2 platí jiný model. Soubory webu patří systémovému uživateli www-data a pod ním běží i PHP. Uživatel je společný pro všechny weby na serveru, doménový uživatel na V2 neexistuje – příkaz id example-cz na takovém serveru odpoví, že žádný takový uživatel není.

Ověřit si to můžete stejným příkazem jako na V3:

ls -la /www/hosting/example.cz/www/

Ve třetím a čtvrtém sloupci uvidíte www-data:

drwxr-xr-x  2 www-data www-data  4096 wp-content
-rw-r--r--  1 www-data www-data  6038 index.php

Praktický dopad je jediný, zato důležitý: do příkazu chown patří na V2 jiná hodnota než na V3. Příkaz s doménovým uživatelem na V2 skončí chybou, protože takový uživatel neexistuje. Opačná záměna je horší – hodnota www-data projde na V3 bez chyby a web tím ztratí právo zapisovat do vlastních souborů.

Pozor: Hodnota www-data není univerzální. Na webhostingu a ve VPS Centru V3 patří soubory doménovému uživateli. Než příkaz spustíte, ověřte si, kterou verzi VPS Centra máte.

Jak práva změnit přes FTP klienta – webhosting, VPS

FTP klient je jediná cesta, jak práva změnit bez terminálu. Správce souborů tuhle možnost nenabízí ani v Zákaznickém portálu, ani ve VPS Centru – umí upravovat obsah souborů, ne jejich práva. Postup je na webhostingu i na VPS stejný, protože se celý odehrává ve vašem FTP klientovi.

Po připojení se ocitnete v kořenovém adresáři účtu. Soubory webu jsou až ve složce www, takže do ní nejdřív vstupte.

Pozor: Ve sloupci s vlastníkem zobrazují FTP klienti jméno přihlášeného FTP účtu, ne skutečného vlastníka souboru. Náš FTP server tento údaj ve výpisu nahrazuje. Skutečné vlastnictví z FTP klienta nezjistíte.

Změna práv v Cyberduck

Cyberduck nastavuje práva v okně s informacemi o souboru.

Cyberduck, nabídka u souboru ve složce www s položkou Info
  1. Připojte se k serveru a otevřete složku www.
  2. Klikněte pravým tlačítkem na soubor nebo složku, u které chcete práva změnit, a zvolte Info.
  3. V okně přepněte na záložku Permissions.
  4. Zadejte novou hodnotu do pole UNIX Permissions, nebo práva poskládejte volbami Read, Write a Execute u řádků Owner, Group a Others. Pole i volby ukazují totéž nastavení, takže je jedno, kterou cestou půjdete.
  5. Okno zavřete. Cyberduck změnu zapíše sám, nic dalšího potvrzovat nemusíte.
Cyberduck, okno Info se záložkou Permissions a hodnotou UNIX Permissions

Okno nabízí i tlačítko Apply changes recursively, kterým se stejná práva nastaví všemu uvnitř složky. U jednotlivého souboru je tlačítko nedostupné.

Změna práv ve FileZilla

FileZilla zobrazuje práva rovnou ve výpisu, ve sloupci Permissions, včetně číselné hodnoty v závorce. Sloupec Owner/Group vedle něj je právě ten, ve kterém uvidíte jméno svého FTP účtu místo skutečného vlastníka.

FileZilla, výpis složky www s nabídkou obsahující položku File permissions
  1. Připojte se k serveru a v pravé části okna otevřete složku www.
  2. Klikněte pravým tlačítkem na soubor nebo složku a zvolte File permissions.
  3. V okně Change file attributes zaškrtněte volby Read, Write a Execute u skupin Owner permissions, Group permissions a Public permissions, nebo rovnou zapište hodnotu do pole Numeric value.
  4. Potvrďte tlačítkem OK.
FileZilla, okno Change file attributes s hodnotou 444 v poli Numeric value

Volby i pole Numeric value popisují totéž nastavení, v okně je tedy vidíte vedle sebe. Poznámka pod polem upozorňuje, že znakem x na kterékoli pozici ponecháte původní hodnotu. To se hodí při hromadné změně, kde chcete upravit jen jednu z trojic a zbytek nechat být.

Pokud váš klient nabízí volbu, která nastaví stejná práva i všemu uvnitř složky, používejte ji s rozmyslem. U složek a souborů se doporučené hodnoty liší, takže jedna hodnota nastavená na obojí nebude správně ani pro jedno. U rozsáhlého webu navíc taková změna trvá dlouho, protože klient prochází soubor po souboru.

Práva umí nastavit i další FTP klienti. Na VPS můžete sáhnout také po WinSCP, které se připojuje přes SSH – provede vás jím Jak se připojit na SSH pomocí WinSCP.

Jak práva a vlastníka změnit přes SSH na VPS

Na VPS máte navíc k dispozici příkazovou řádku. Vyplatí se ve dvou situacích: když měníte vlastníka, což přes FTP nejde vůbec, a když jde o velké množství souborů, kde by klikání ve FTP klientovi trvalo neúměrně dlouho. Na webhostingu SSH k dispozici není a jedinou cestou tam zůstává FTP klient.

Ve všech příkazech níže je example.cz ukázková doména – dosaďte do cesty i do jména uživatele tu svoji.

Změna práv příkazem chmod

Příkaz chmod nastavuje práva. Zadává se s hodnotou a cestou k souboru:

chmod 644 /www/hosting/example.cz/www/robots.txt

Soubor robots.txt tím dostane právo čtení a zápisu pro vlastníka a právo čtení pro skupinu a ostatní.

Přepínač -R provede stejnou změnu rekurzivně, tedy i pro všechno uvnitř zadané složky. U webu je ale rekurzivní chmod s jednou hodnotou ošidný, protože složky potřebují 755 a soubory 644. Nastavit obojí najednou na 755 znamená označit všechny soubory jako spustitelné, což obsah webu nepotřebuje.

Řešením je nechat systém rozlišit složky od souborů. Následující dvojice příkazů projde celý web a každému typu nastaví jeho hodnotu:

find /www/hosting/example.cz/www/ -type d -exec chmod 755 {} +
find /www/hosting/example.cz/www/ -type f -exec chmod 644 {} +

První příkaz najde všechny složky (-type d) a nastaví jim 755, druhý najde všechny soubory (-type f) a nastaví jim 644. Tohle je bezpečná varianta, kterou můžete pustit na celý web.

Změna vlastníka a skupiny příkazy chown a chgrp

Příkaz chown mění vlastníka, chgrp mění skupinu. Zápisem ve tvaru vlastník:skupina nastaví chown obojí najednou, takže si s ním vystačíte i tam, kde měníte i skupinu.

Pozor: Než příkaz spustíte, zkontrolujte cestu na jeho konci. Rekurzivní chown spuštěný nad kořenem systému přepíše vlastníka všem souborům operačního systému a server se z toho sám nedostane. Cesta má vždy začínat /www/hosting/ a obsahovat vaši doménu.

Hodnota vlastníka se liší podle verze VPS Centra:

  • VPS Centrum V3: vlastníkem je doménový uživatel. Pro doménu example.cz tedy chown -R example-cz:example-cz /www/hosting/example.cz/www/.
  • VPS Centrum V2: vlastníkem je www-data, společný pro celý server. Příkaz je tedy chown -R www-data:www-data /www/hosting/example.cz/www/.

Pokud si nejste jistí, kterou hodnotu použít, ověřte si aktuální stav podle sekce Kdo je vlastníkem souborů vašeho webu. Vlastníka může měnit pouze root, takže příkaz nespustíte pod jiným účtem.

Řešení problémů

Web hlásí chybu 403 Forbidden

Symptom: Místo webu se v prohlížeči zobrazí chyba 403 Forbidden.

Příčina: Webserver nemá právo soubor přečíst, nebo se nedostane do složky, ve které soubor leží. U složek za tím stojí chybějící právo x, u souborů chybějící právo r pro skupinu a ostatní.

Řešení: Nastavte složkám 755 a souborům 644, buď přes FTP klienta, nebo na VPS dvojicí příkazů find ze sekce Změna práv příkazem chmod. Pokud chybu vrací jen některé adresy, projděte celou cestu ke složce postupně od www dolů – stačí jediná složka bez práva x. Chybu 403 může vyvolat i pravidlo v souboru .htaccess nebo chybějící úvodní soubor ve složce, takže pokud práva sedí, hledejte dál tam.

Po nahrání souborů přes SSH přestal web fungovat

Symptom: Nahráli jsme nebo rozbalili soubory v terminálu a od té chvíle web vrací chybu, případně se aktualizace v administraci nedokončí.

Příčina: Soubory nahrané nebo rozbalené pod uživatelem root patří rootovi. PHP běží pod jiným uživatelem, takže do nich nezapíše, a podle práv, se kterými soubory na server dorazily, se k některým nemusí dostat vůbec.

Řešení: Vraťte souborům správného vlastníka:

  • VPS Centrum V3: chown -R example-cz:example-cz /www/hosting/example.cz/www/
  • VPS Centrum V2: chown -R www-data:www-data /www/hosting/example.cz/www/

Pro příště nahrávejte soubory přes FTP, kde se vlastník nastaví správně sám. Terminál se hodí u velkých archivů, kde je rozbalení výrazně rychlejší – pak ale chown patří k postupu jako povinný závěrečný krok, jak popisuje Jak zazálohovat a obnovit web.

WordPress nemůže nahrát obrázek ani aktualizovat plugin

Symptom: WordPress hlásí, že se nepodařilo vytvořit adresář nebo zapsat do složky, případně po nás při aktualizaci chce FTP údaje.

Příčina: Příčiny jsou dvě a je potřeba je rozlišit. Buď složka nemá právo zápisu ani pro vlastníka, nebo ho má, ale vlastník neodpovídá uživateli, pod kterým běží PHP. V obou případech dopadne zápis stejně.

Řešení: Nejdřív složce nastavte 755, přes FTP klienta nebo na VPS příkazem chmod ze sekce Změna práv příkazem chmod. Práva na 777 přitom nezvyšujte, vyšší hodnota než 755 vlastníkovi nic nepřidá. Pokud zápis ani pak nefunguje, je problém ve vlastnictví a opravíte ho podle rozhraní, které používáte:

  • Webhosting: vlastníka nezměníte. Ověřte, že soubory přišly na server přes FTP, a pokud to nepomůže, napište naší podpoře.
  • VPS Centrum V3: nastavte vlastnictví na doménového uživatele příkazem chown -R example-cz:example-cz /www/hosting/example.cz/www/.
  • VPS Centrum V2: nastavte vlastnictví na www-data příkazem chown -R www-data:www-data /www/hosting/example.cz/www/.

Ve FTP klientovi vidíme jiného vlastníka, než jaký je na serveru

Symptom: Ve sloupci s vlastníkem se u všech souborů zobrazuje jméno našeho FTP účtu, i když na serveru soubory patří jinému uživateli.

Příčina: FTP server ve výpisu nahrazuje jméno vlastníka i skupiny jménem přihlášeného účtu. Ve sloupci tedy nevidíte skutečné vlastnictví, ale zástupný údaj.

Řešení: Na VPS zjistíte skutečného vlastníka přes SSH příkazem ls -la podle sekce Kdo je vlastníkem souborů vašeho webu. Na webhostingu tuhle možnost nemáte – pokud potřebujete ověřit, že je vlastnictví v pořádku, napište naší podpoře.

Máme na webu nastavená práva 777 a nevíme, jestli to vadí

Symptom: Na složky nebo soubory webu máme nastavenou hodnotu 777. Web funguje a nevíme, jestli s tím máme něco dělat.

Příčina: Hodnota 777 dává právo zápisu vlastníkovi, skupině i ostatním. Web takové rozšíření nepotřebuje, protože zapisuje jako vlastník. Právo zápisu tím navíc dostávají i účty na serveru, které s vaším webem nemají nic společného.

Řešení: Vraťte se na 755 pro složky a 644 pro soubory, na VPS nejrychleji dvojicí příkazů find ze sekce Změna práv příkazem chmod, na webhostingu přes FTP klienta. Pokud po snížení práv přestane fungovat zápis, není chyba v hodnotě, ale ve vlastnictví souborů – řešení najdete v sekci Kdo je vlastníkem souborů vašeho webu.

Na webhostingu nám nejde změnit vlastníka souboru

Symptom: Potřebujeme na webhostingu změnit vlastníka souboru a nenašli jsme, kde se to nastavuje.

Příčina: Vlastníka může měnit pouze uživatel root, na webhostingu tedy jedině my. Webhosting nemá SSH přístup a Správce souborů ani FTP klient tuhle možnost nenabízejí.

Řešení: Soubory nahrané přes FTP dostanou správného vlastníka samy, takže problematický soubor stačí smazat a nahrát znovu přes FTP.

Pokud problém přetrvává, kontaktujte naši podporu.

Práva a vlastnictví patří k věcem, které si na vlastním serveru hlídáte sami. Pokud se k terminálu vracet nechcete, podívejte se na managed servery – správu serveru včetně zásahů, jako je tenhle, na nich bereme na sebe.

Pomohl vám tento článek?

Podobné články

Podpora Váš Hosting
Offline

Dobrý den! Jsem virtuální asistent Váš Hosting a jsem tu pro Vás nonstop.

Poradím Vám s doménami a DNS, s webhostingem i vlastním serverem, s e-maily, SSL certifikáty nebo verzí PHP a odpovím i na dotazy k tarifům, cenám a fakturaci. Na co se ptáte?

Nemám přístup k údajům o Vašich konkrétních službách, odpovídám orientačně. U složitějších věcí Vás předám kolegům z podpory.