Čitanje i ispravno postavljanje dozvola za datoteke na Vašem VPS-u
Svaka datoteka i svaka mapa na Vašem VPS-u ima vlasnika, grupu i dozvole. Ako su dozvole preširoke, hakirana web stranica ili usluga može pisati posvuda. Ako su prestroge, dobit ćete pogreške poput "Permission denied" ili 403 na Vašoj web stranici. Ovdje ćete saznati kako čitati dozvole i kako ih ispravno postaviti. Imate li paket hostinga s DirectAdminom, pogledajte Zabranjeno (403): Nemate dopuštenje za pristup / na ovom poslužitelju.
Čitanje dozvola pomoću 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
Prvi znak označava vrstu: - je datoteka, d mapa, l prečac (simbolička poveznica). Zatim slijede tri skupine od po tri znaka: što smije vlasnik, što smije grupa i što smiju svi ostali. Nakon toga navedeni su vlasnik (anna) i grupa (www-data).
| Slovo | Kod datoteke | Kod mape |
|---|---|---|
r | Čitanje | Dohvaćanje naziva u mapi |
w | Izmjena | Stvaranje, preimenovanje i brisanje datoteka |
x | Pokretanje kao program | Ulazak u mapu i otvaranje datoteka u njoj |
Obratite pozornost na dvije stvari. Bez x na mapi ne možete pristupiti datotekama u njoj, čak i ako su čitljive. A tko ima w na mapi, može u njoj brisati datoteke, čak i ako pripadaju nekom drugom.
Dozvole kao broj
Dozvole se često zapisuju kao tri znamenke: r vrijedi 4, w 2, a x 1, zbrojeno po skupini.
| Broj | Dozvole | Upotreba |
|---|---|---|
| 644 | rw-r--r-- | Obična datoteka, na primjer web stranica ili slika |
| 755 | rwxr-xr-x | Mapa ili program koji svi smiju koristiti |
| 640 | rw-r----- | Konfiguracija s lozinkom, čitljiva web poslužitelju putem grupe |
| 600 | rw------- | Tajna datoteka, poput authorized_keys, privatnog ključa ili datoteke .env |
| 700 | rwx------ | Privatna mapa, poput ~/.ssh |
Promjena dozvola i vlasnika
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 mijenja dozvole, brojem ili slovima (u, g, o za vlasnika, grupu i ostale, uz + ili -). chown vlasnik:grupa mijenja vlasnika i grupu; to smije samo root, dakle uz sudo.
Za cijelu mapu chmod -R 644 poznata je pogreška: sve podmape tada gube svoj x i postaju neupotrebljive. Mape i datoteke postavite zasebno pomoću naredbe find:
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
Web poslužitelj putem grupe
Na Debianu i Ubuntuu nginx i PHP-FPM prema zadanim postavkama rade pod korisnikom www-data. Uredan raspored: Vi ste vlasnik datoteka, a grupa je www-data. Web poslužitelj tada smije čitati putem grupe, a pisati samo u mapu u kojoj je to stvarno potrebno, poput uploads (chmod g+w ili vlasnik www-data samo na toj mapi). Ne dajte web poslužitelju pravo pisanja na Vaše PHP datoteke.
777. Tada svi na poslužitelju smiju čitati, mijenjati i pokretati datoteku ili mapu. Ako ikada nešto pođe po zlu s jednom web stranicom ili uslugom, napadač može pisati posvuda gdje je postavljeno 777. Pravi je problem gotovo uvijek vlasnik ili grupa: riješite to umjesto da sve otvorite.Dozvole za SSH
SSH poslužitelj provjerava dozvole Vaših ključeva. Ako drugi smiju pisati u Vašu mapu .ssh ili u Vašu matičnu mapu, on zanemaruje Vaš ključ i ponovno Vam traži lozinku, bez jasne poruke o pogrešci. Postavite to ovako:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Ako ste mapu kao root stvorili za drugog korisnika, ispravite i vlasnika, kao u članku Vlastiti korisnik sa sudo ovlastima. Na AlmaLinuxu i Rocky Linuxu i SELinux može odbiti datoteku koja ima ispravne dozvole; kod ručno stvorene mape .ssh pomaže restorecon -Rv ~/.ssh.
s umjesto x, kao kod /usr/bin/passwd? To je setuid bit: program se tada izvodi s dozvolama vlasnika. Nekoliko programa sustava to treba, ali nikada ga sami ne postavljajte na skriptu. Neočekivana setuid datoteka može upućivati na provalu, pogledajte Hakirani ste? Prvi koraci.Želite li naučiti više? Pohađajte besplatni tečaj VPS i upravljanje Linux poslužiteljem, lekcija 3.1 Korisnici, grupe i dozvole datoteka.
