Jak zjistit a správně nastavit oprávnění souborů na Vašem VPS
Každý soubor a každá složka na Vašem VPS má vlastníka, skupinu a oprávnění. Pokud jsou oprávnění příliš volná, může napadený web nebo služba zapisovat kamkoli. Pokud jsou příliš přísná, zobrazí se chyby jako "Permission denied" nebo chyba 403 na Vašem webu. Zde se dočtete, jak oprávnění číst a správně nastavit. Máte-li hostingový balíček s DirectAdmin, podívejte se na článek Zakázáno (403): Nemáte oprávnění k přístupu k / na tomto serveru.
Čtení oprávnění pomocí ls -l
ls -l /var/www/example.com -rw-r--r-- 1 anna www-data 1520 index.html -rw-r----- 1 anna www-data 412 config.php drwxr-xr-x 2 anna www-data 4096 images drwxrwxr-x 2 www-data www-data 4096 uploads
První znak udává typ: - je soubor, d složka, l symbolický odkaz. Následují tři skupiny po třech znacích: co smí vlastník, co smí skupina a co smějí všichni ostatní. Poté je uveden vlastník (anna) a skupina (www-data).
| Písmeno | U souboru | U složky |
|---|---|---|
r | Čtení | Výpis názvů ve složce |
w | Úprava | Vytváření, přejmenování a mazání souborů |
x | Spuštění jako program | Vstup do složky a otevírání souborů v ní |
Dejte pozor na dvě věci. Bez x na složce se k souborům v ní nedostanete, i když jsou čitelné. A kdo má w na složce, může v ní mazat soubory, i když patří někomu jinému.
Oprávnění jako číslo
Oprávnění se často zapisují jako tři číslice: r má hodnotu 4, w 2 a x 1, sečteno pro každou skupinu.
| Číslo | Oprávnění | Použití |
|---|---|---|
| 644 | rw-r--r-- | Běžný soubor, například webová stránka nebo obrázek |
| 755 | rwxr-xr-x | Složka nebo program, který smí používat každý |
| 640 | rw-r----- | Konfigurace s heslem, čitelná pro webový server přes skupinu |
| 600 | rw------- | Tajný soubor, jako authorized_keys, soukromý klíč nebo soubor .env |
| 700 | rwx------ | Soukromá složka, jako ~/.ssh |
Změna oprávnění a vlastníka
chmod 640 /var/www/example.com/config.php chmod g+w /var/www/example.com/uploads sudo chown anna:www-data /var/www/example.com/config.php
chmod mění oprávnění, a to číslem nebo písmeny (u, g, o pro vlastníka, skupinu a ostatní, s + nebo -). chown vlastník:skupina mění vlastníka a skupinu; to smí pouze root, tedy s sudo.
U celé složky je chmod -R 644 známou chybou: všechny podsložky tím ztratí své x a stanou se nepoužitelnými. Nastavte složky a soubory zvlášť pomocí find:
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
Webový server přes skupinu
Na Debianu a Ubuntu běží nginx a PHP-FPM ve výchozím nastavení pod uživatelem www-data. Čisté uspořádání: Vy jste vlastníkem souborů, skupinou je www-data. Webový server pak smí číst přes skupinu a zapisovat jen do složky, kde je to opravdu nutné, například uploads (chmod g+w nebo vlastník www-data pouze na této složce). Nedávejte webovému serveru právo zápisu do Vašich PHP souborů.
777. Pak smí kdokoli na serveru soubor nebo složku číst, měnit a spouštět. Pokud se někdy jediný web nebo služba pokazí, může útočník zapisovat všude, kde je nastaveno 777. Skutečným problémem je téměř vždy vlastník nebo skupina: vyřešte to místo toho, abyste vše otevřeli.Oprávnění pro SSH
SSH server kontroluje oprávnění Vašich klíčů. Pokud mohou ostatní zapisovat do Vaší složky .ssh nebo do Vaší domovské složky, Váš klíč ignoruje a znovu se zobrazí výzva k zadání hesla, bez srozumitelné chybové zprávy. Nastavte to takto:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Pokud jste složku vytvořili jako root pro jiného uživatele, nastavte také správného vlastníka, jako v článku Vlastní uživatel se sudo. Na AlmaLinux a Rocky Linux může soubor se správnými oprávněními odmítnout také SELinux; u ručně vytvořené složky .ssh pomůže restorecon -Rv ~/.ssh.
s místo x, například u /usr/bin/passwd? To je bit setuid: program pak běží s oprávněními svého vlastníka. Několik systémových programů to potřebuje, ale nikdy jej sami nenastavujte na skript. Neočekávaný soubor se setuid může ukazovat na průnik, viz Napadení? První kroky.Chcete se dozvědět více? Absolvujte bezplatný kurz VPS a správa Linuxových serverů, lekce 3.1 Uživatelé, skupiny a oprávnění souborů.
