Uprawnienia plików określają, kto może odczytywać, zapisywać lub wykonywać plik albo katalog. W systemie Linux przedstawia się je jako trzycyfrową liczbę ósemkową: pierwsza cyfra dotyczy właściciela, druga grupy, trzecia wszystkich pozostałych. Każda cyfra składa się z odczytu (4), zapisu (2) i wykonywania (1). Źle ustawione uprawnienia – przede wszystkim rozpowszechnione, lecz niebezpieczne 777 – pozwalają dowolnym użytkownikom lub zhakowanym kontom sąsiadów na serwerze współdzielonym zmieniać twoje pliki i wstrzykiwać złośliwy kod. Zalecenie WordPress brzmi: 755 dla katalogów, 644 dla plików oraz surowsze 600 lub 640 dla wp-config.php. Ten poradnik pokazuje, jak ustawić te wartości przez SSH lub SFTP i na jakie przypadki szczególne zwrócić uwagę.
Co oznaczają 755 i 644?
| Wartość | Znaczenie | Zastosowanie |
|---|---|---|
| 755 | Właściciel: odczyt+zapis+wykonanie; grupa/inni: odczyt+wykonanie | Wszystkie katalogi (wykonanie = wejście do środka) |
| 644 | Właściciel: odczyt+zapis; grupa/inni: tylko odczyt | Wszystkie zwykłe pliki |
| 600 | tylko właściciel: odczyt+zapis | wp-config.php (surowo) |
| 640 | Właściciel: odczyt+zapis; grupa: odczyt | wp-config.php (jeśli grupa musi czytać) |
| 777 | każdy: odczyt+zapis+wykonanie | Nigdy nie używać |
Krok 1: ustaw katalogi na 755
Połącz się przez SSH z katalogiem głównym WordPress i ustaw wszystkie katalogi rekurencyjnie:
cd /pfad/zu/wordpress
find . -type d -exec chmod 755 {} \;Krok 2: ustaw pliki na 644
find . -type f -exec chmod 644 {} \;Te dwa polecenia ustawiają całą instalację na bezpieczne wartości domyślne. Wykonaj je w tej kolejności (najpierw katalogi, potem pliki).
Krok 3: obsłuż przypadki szczególne
wp-config.php
Najbardziej wrażliwy plik otrzymuje surowsze uprawnienie:
chmod 600 wp-config.php
# oder, falls der Webserver-Prozess über die Gruppe lesen muss:
chmod 640 wp-config.php.htaccess
Plik .htaccess pozostaje na 644. Nie ustawiaj go jako zapisywalnego dla innych, w przeciwnym razie atakujący mogliby manipulować regułami przepisywania.
wp-content/uploads
Katalog uploads musi być zapisywalny przez serwer www, aby przesyłanie mediów działało. 755 dla katalogów zwykle wystarcza – kluczowe jest, aby właściciel był poprawny (patrz krok 4). Nie nadawaj tutaj żadnego 777. Ważne: w uploads żaden plik PHP nie może być wykonywalny. Dla zabezpieczenia dodaj:
# .htaccess in wp-content/uploads/ (Apache)
<Files *.php>
Require all denied
</Files>Krok 4: ustaw właściwego właściciela
Niemal ważniejszy niż liczby jest właściciel plików. Wszystkie pliki WordPress powinny należeć do użytkownika, pod którym działa serwer www lub proces PHP (często www-data, apache, nginx lub twój użytkownik SFTP). Sprawdź i ustaw:
# Aktuellen Eigentümer anzeigen
ls -l
# Eigentümer und Gruppe rekursiv setzen (Beispiel www-data)
sudo chown -R www-data:www-data /pfad/zu/wordpressGdy właściciel jest poprawny, WordPress może wykonywać aktualizacje i przesyłanie plików bez osłabiania uprawnień. Częstym błędem jest zbyt pochopne sięganie po 777 przy problemach z aktualizacjami, choć w rzeczywistości błędny jest tylko właściciel.
Wszystko naraz (skrypt)
#!/bin/bash
# Im WordPress-Stammverzeichnis ausführen
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 600 wp-config.php
echo "Dateiberechtigungen gesetzt: 755 Ordner, 644 Dateien, 600 wp-config.php"Jak sprawdzić uprawnienia?
- Sprawdzenie pojedynczego pliku:
ls -l wp-config.php index.php # Erwartet: -rw------- für wp-config.php, -rw-r--r-- für index.php - Wyszukiwanie niebezpiecznych uprawnień 777:
find . -type d -perm 0777 find . -type f -perm 0777 # Erwartet: keine Ausgabe - Sprawdź, że PHP nie jest wykonywane w katalogu uploads, wywołując plik testowy (powinien zwrócić 403).
Częste błędy
- 777 jako szybkie rozwiązanie: Pozornie rozwiązuje problemy z aktualizacjami, ale otwiera drzwi na oścież. Niemal zawsze prawdziwym problemem jest właściciel.
- Wykonywalne skrypty w uploads: Bez blokady PHP w katalogu uploads przesłany złośliwy plik może zostać wykonany.
- Zapomniane uprawnienia po migracji: Po zmianie serwera lub hostingu właściciel i uprawnienia często już się nie zgadzają – ustaw je ponownie.
- Hosting współdzielony bez SSH: Tam ustawiasz uprawnienia w kliencie SFTP (prawy przycisk » uprawnienia) lub w menedżerze plików panelu hostingowego.
Często zadawane pytania (FAQ)
Jakie uprawnienia plików są zalecane dla WordPress?
Zalecenie WordPress to 755 dla wszystkich katalogów, 644 dla wszystkich zwykłych plików oraz surowsze 600 lub 640 dla wp-config.php. Katalogi potrzebują prawa wykonywania, aby można było do nich wejść, dlatego 755 zamiast 644.
Dlaczego uprawnienie 777 jest niebezpieczne w WordPress?
777 pozwala każdemu użytkownikowi na serwerze odczytywać, modyfikować i wykonywać plik lub katalog. Na hostingu współdzielonym zhakowane konto sąsiada może w ten sposób wstrzyknąć złośliwy kod do twojej instalacji. W niemal wszystkich przypadkach prawdziwą przyczyną problemów z aktualizacjami nie jest uprawnienie, lecz niewłaściwy właściciel pliku.
Dlaczego właściciel pliku jest ważniejszy niż liczby?
Wszystkie pliki WordPress powinny należeć do użytkownika, pod którym działa serwer www lub proces PHP (często www-data, apache lub nginx). Gdy właściciel jest poprawny, WordPress może wykonywać aktualizacje i przesyłanie plików bez osłabiania uprawnień do niebezpiecznych wartości takich jak 777.
Jak zapobiec wykonywaniu plików PHP w katalogu uploads?
Utwórz w wp-content/uploads plik .htaccess, który odmawia dostępu do plików PHP (w Apache za pomocą bloku <Files> i Require all denied). Dzięki temu przesłany złośliwy plik nie może zostać wykonany jako PHP, nawet jeśli trafi do katalogu uploads.
Jak InspectWP pomaga przy uprawnieniach plików?
InspectWP nie może odczytać uprawnień systemu plików z zewnątrz, ale sprawdza objawowe skutki niebezpiecznych konfiguracji: na przykład czy wrażliwe pliki są publicznie dostępne, czy PHP jest wykonywane w katalogu uploads albo czy listing katalogu jest odsłonięty. Takie znaleziska w raporcie to mocny sygnał, aby sprawdzić uprawnienia plików i katalogów.