chmod to komenda Linux do zmiany uprawnień plików i katalogów – decyduje kto może czytać, zapisywać i uruchamiać dany plik. Każdy plik w Linuxie ma trzy zestawy uprawnień: dla właściciela (owner), grupy (group) i reszty (others). Uprawnienia: r (read – czytanie), w (write – zapis), x (execute – uruchamianie). Źle ustawione uprawnienia to najczęstsza przyczyna błędów 403 Forbidden na stronach i luk bezpieczeństwa na serwerach.
Spis treści
ToggleJak działają uprawnienia w Linux
Sprawdź uprawnienia: ls -la → wyświetla pliki z uprawnieniami:
-rwxr-xr-- 1 www-data www-data 4096 kwi 26 10:00 index.php
drwxr-x--- 2 www-data www-data 4096 kwi 26 10:00 wp-content
Pierwsza kolumna: -rwxr-xr-- to 10 znaków. Pierwszy znak: - (plik) lub d (katalog). Następne 9 znaków to 3 grupy po 3:
| Pozycja | Dotyczy | Przykład |
|---|---|---|
| Znaki 2–4 | Właściciel (owner) | rwx = czytaj + pisz + uruchom |
| Znaki 5–7 | Grupa (group) | r-x = czytaj + uruchom (brak zapisu) |
| Znaki 8–10 | Inni (others) | r-- = tylko czytaj |
Notacja numeryczna (octal)
Zamiast liter, uprawnienia zapisuje się liczbami: r=4, w=2, x=1. Suma per grupę:
| Cyfra | Uprawnienia | Litery |
|---|---|---|
| 7 | czytaj + pisz + uruchom | rwx |
| 6 | czytaj + pisz | rw- |
| 5 | czytaj + uruchom | r-x |
| 4 | tylko czytaj | r– |
| 0 | brak uprawnień | — |
chmod 755 plik → właściciel: rwx (7), grupa: r-x (5), inni: r-x (5). chmod 644 plik → właściciel: rw- (6), grupa: r– (4), inni: r– (4).
Poprawne uprawnienia dla WordPress
Największe wyzwanie: uprawnienia muszą pozwalać serwerowi WWW (użytkownik www-data na Ubuntu) czytać i uruchamiać pliki – ale nie dawać za dużo praw (bezpieczeństwo).
| Co | Uprawnienia | Dlaczego |
|---|---|---|
| Katalogi | 755 | Serwer czyta i przechodzi, ale nie modyfikuje |
| Pliki | 644 | Serwer czyta, właściciel edytuje |
| wp-config.php | 600 lub 640 | Tylko właściciel czyta (dane dostępowe!) |
| wp-content/uploads | 755 | Serwer musi zapisywać uploadowane pliki |
# Ustaw poprawne uprawnienia dla WordPress
find /var/www/html -type d -exec chmod 755 {} ;
find /var/www/html -type f -exec chmod 644 {} ;
chmod 600 /var/www/html/wp-config.php
Nigdy nie ustawiaj 777 – chmod 777 daje pełne uprawnienia KAŻDEMU użytkownikowi systemu. Haker, który zdobędzie dostęp do jakiegokolwiek procesu na serwerze, może modyfikować Twoje pliki. 777 na plikach WordPress: krytyczna luka bezpieczeństwa.
chown – zmiana właściciela
chown zmienia właściciela i grupę pliku:
# Zmień właściciela na www-data (użytkownik serwera WWW)
sudo chown www-data:www-data /var/www/html -R
# Zmień tylko grupę
sudo chgrp www-data /var/www/html -R
Na VPS z Nginx/Apache: pliki WordPressa powinny należeć do www-data:www-data (Ubuntu) lub nginx:nginx (CentOS). Jeśli właściciel to root – serwer WWW nie może pisać do wp-content/uploads (błąd przy uploadzie mediów).
Debugowanie problemów z uprawnieniami
Błąd 403 Forbidden: serwer nie może czytać pliku. Sprawdź: ls -la → czy serwer WWW ma uprawnienie r (read)? Czy katalogi mają x (execute – wymagane do „wejścia” do katalogu)? Napraw: chmod 755 katalogi, chmod 644 pliki.
Nie mogę uploadować plików w WordPress: katalog wp-content/uploads nie pozwala na zapis. Sprawdź: ls -la wp-content/ → czy uploads ma uprawnienie w dla www-data? Napraw: chown www-data:www-data wp-content/uploads -R.
Skrypt nie chce się uruchomić: brak uprawnienia x (execute). Napraw: chmod +x skrypt.sh.
Najczęściej zadawane pytania
Co oznacza chmod 777 i dlaczego nie używać?
777 = rwxrwxrwx = każdy użytkownik w systemie może czytać, pisać i uruchamiać plik. Na serwerze współdzielonym: inni użytkownicy hostingu mogą modyfikować Twoje pliki. Na VPS: każdy proces (w tym zhakowany) ma pełny dostęp. Używaj: 755 na katalogach, 644 na plikach, 600 na plikach z hasłami (wp-config.php).
Jak ustawić uprawnienia rekursywnie?
chmod -R 755 /var/www/ → ustawi 755 na WSZYSTKO (katalogi i pliki). Problem: pliki nie powinny mieć x (execute). Lepiej: find /var/www -type d -exec chmod 755 {} ; (tylko katalogi) i find /var/www -type f -exec chmod 644 {} ; (tylko pliki).
Czy chmod działa na shared hostingu?
Tak – ale przez FileZilla (prawy klik → Atrybuty pliku → wpisz np. 644) lub menedżer plików w cPanel (prawy klik → Change Permissions). Przez SSH (jeśli hosting oferuje): chmod 644 plik.php normalnie.

