Ako čítať a správne nastaviť oprávnenia súborov na vašom VPS
Každý súbor a každý priečinok na vašom VPS má vlastníka, skupinu a oprávnenia. Ak sú nastavené príliš voľne, napadnutá webová stránka alebo služba môže zapisovať kamkoľvek. Ak sú príliš prísne, zobrazia sa chyby ako "Permission denied" alebo chyba 403 na vašej webovej stránke. Tu sa dozviete, ako oprávnenia čítať a správne nastaviť. Ak máte hostingový balík s DirectAdmin, pozrite si článok Zakázané (403): Nemáte oprávnenie na prístup k / na tomto serveri.
Čítanie oprávnení pomocou 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
Prvý znak označuje typ: - je súbor, d priečinok, l symbolický odkaz. Nasledujú tri skupinky po troch znakoch: čo smie vlastník, čo smie skupina a čo smú všetci ostatní. Potom nasleduje vlastník (anna) a skupina (www-data).
| Písmeno | Pri súbore | Pri priečinku |
|---|---|---|
r | Čítanie | Zobrazenie názvov v priečinku |
w | Úprava | Vytváranie, premenovanie a mazanie súborov |
x | Spustenie ako program | Vstup do priečinka a otváranie súborov v ňom |
Dávajte pozor na dve veci. Bez x na priečinku sa k súborom v ňom nedostanete, aj keď sú čitateľné. A kto má w na priečinku, môže v ňom mazať súbory, aj keď patria niekomu inému.
Oprávnenia ako číslo
Oprávnenia sa často zapisujú ako tri číslice: r má hodnotu 4, w 2 a x 1, sčítané pre každú skupinku.
| Číslo | Oprávnenia | Použitie |
|---|---|---|
| 644 | rw-r--r-- | Bežný súbor, napríklad webová stránka alebo obrázok |
| 755 | rwxr-xr-x | Priečinok alebo program, ktorý môže používať každý |
| 640 | rw-r----- | Konfigurácia s heslom, čitateľná pre webový server cez skupinu |
| 600 | rw------- | Tajný súbor, napríklad authorized_keys, súkromný kľúč alebo súbor .env |
| 700 | rwx------ | Súkromný priečinok, napríklad ~/.ssh |
Zmena oprávnení 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 mení oprávnenia pomocou čísla alebo písmen (u, g, o pre vlastníka, skupinu a ostatných, s + alebo -). chown vlastník:skupina mení vlastníka a skupinu; to môže iba root, preto s sudo.
Pri celom priečinku je chmod -R 644 známa chyba: všetky podpriečinky potom stratia svoje x a stanú sa nepoužiteľnými. Priečinky a súbory nastavte zvlášť pomocou 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 cez skupinu
Na Debiane a Ubuntu bežia nginx a PHP-FPM štandardne pod používateľom www-data. Prehľadné usporiadanie: vlastníkom súborov ste vy, skupinou je www-data. Webový server potom môže čítať cez skupinu a zapisovať iba do priečinka, kde je to naozaj potrebné, napríklad uploads (chmod g+w alebo vlastník www-data iba na tomto priečinku). Nedávajte webovému serveru právo zápisu do vašich PHP súborov.
777. Vtedy môže ktokoľvek na serveri súbor alebo priečinok čítať, upravovať a spúšťať. Ak bude niekedy napadnutá čo i len jedna webová stránka alebo služba, útočník môže zapisovať všade, kde je nastavené 777. Skutočným problémom je takmer vždy vlastník alebo skupina: vyriešte to namiesto toho, aby ste všetko otvorili.Oprávnenia pre SSH
SSH server kontroluje oprávnenia vašich kľúčov. Ak môžu iní zapisovať do vášho priečinka .ssh alebo do vášho domovského priečinka, server váš kľúč ignoruje a opäť sa zobrazí výzva na zadanie hesla, bez jasného chybového hlásenia. Nastavte to takto:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Ak ste priečinok vytvorili ako root pre iného používateľa, nastavte aj správneho vlastníka, ako v článku Vlastný používateľ so sudo. Na AlmaLinux a Rocky Linux môže súbor so správnymi oprávneniami odmietnuť aj SELinux; pri ručne vytvorenom priečinku .ssh pomôže restorecon -Rv ~/.ssh.
s namiesto x, napríklad pri /usr/bin/passwd? To je bit setuid: program potom beží s oprávneniami vlastníka. Niekoľko systémových programov to potrebuje, ale nikdy ho sami nenastavujte na skript. Neočakávaný súbor so setuid môže naznačovať prienik, pozrite si článok Napadnutie hackerom? Prvé kroky.Chcete sa dozvedieť viac? Absolvujte bezplatný kurz Správa VPS a Linux serverov, lekcia 3.1 Používatelia, skupiny a oprávnenia súborov.
