Popraw uprawnienia plików dla WordPressa

Przejrzałem tutaj ale nie znalazłem żadnych szczegółów na temat najlepszych uprawnień do plików. Spojrzałem też na niektóre pytania formularza WordPressa nad tutaj też, ale każdy, kto sugeruje 777, oczywiście potrzebuje małej lekcji bezpieczeństwa.

Krótko mówiąc moje pytanie jest takie. Jakie uprawnienia powinienem mieć dla:

  1. folder główny przechowujący wszystkie WordPress content
  2. wp-admin
  3. wp-content
  4. wp-zawiera

A potem wszystkie pliki w każdym z tych folderów?

Author: Farkie, 2013-08-21

15 answers

Podczas konfiguracji WP (serwer WWW) może wymagać dostępu do zapisu plików. Więc prawa dostępu mogą być luźne.

chown www-data:www-data  -R * # Let Apache be owner
find . -type d -exec chmod 755 {} \;  # Change directory permissions rwxr-xr-x
find . -type f -exec chmod 644 {} \;  # Change file permissions rw-r--r--

Po skonfigurowaniu należy zaostrzyć prawa dostępu, zgodnie z hartowanie WordPress wszystkie pliki z wyjątkiem wp-content powinny być zapisywalne tylko przez konto użytkownika. wp-content musi być również zapisywalny przez www-data.

chown <username>:<username>  -R * # Let your useraccount be owner
chown www-data:www-data wp-content # Let apache be owner of wp-content

Może chcesz zmienić zawartość w wp-content później. W tym przypadku could

  • chwilowa zmiana u ¿ytkownika na www-data z su,
  • daj wp-content group write access 775 i dołącz do grupy www-data lub
  • nadaj użytkownikowi prawa dostępu do folderu za pomocą ACLs.

Cokolwiek zrobisz, upewnij się, że pliki mają uprawnienia rw Dla www-data .

 346
Author: ManuelSchneid3r,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-03 20:09:28

Zapewnienie pełnego dostępu do wszystkich plików wp użytkownikowi www-data (czyli w tym przypadku użytkownikowi serwera www) może być niebezpieczne. Więc raczej rób a nie to:

chown www-data:www-data -R *

Może być przydatny jednak w momencie, gdy instalujesz lub aktualizujesz WordPress i jego wtyczki. Ale kiedy skończysz, nie jest już dobrym pomysłem, aby zachować pliki wp należące do serwera www.

Zasadniczo pozwala serwerowi www umieścić lub nadpisać dowolny plik w Twojej witrynie. Oznacza to, że istnieje możliwość przejęcia Twojej witryny, jeśli komuś uda się korzystać z serwera www (lub luki bezpieczeństwa w niektórych .skrypt php), aby umieścić niektóre pliki na swojej stronie internetowej.

Aby zabezpieczyć swoją witrynę przed takim atakiem należy:

Wszystkie pliki powinny być własnością konta użytkownika i powinny być zapisywalne przez Ciebie. Każdy plik, który wymaga dostępu do zapisu z WordPress powinien być zapisywalny przez serwer WWW, jeśli Twoja konfiguracja hostingowa tego wymaga, że może oznaczać, że te pliki potrzebują być własnością grupy przez używane konto użytkownika przez proces serwera www.

/

Główny katalog WordPress: wszystkie pliki powinny być zapisywalne tylko przez twoje konto użytkownika, z wyjątkiem .htaccess jeśli chcesz, aby WordPress automatycznie Generuj reguły przepisywania dla Ciebie.

/wp-admin/

Obszar administracyjny WordPress: wszystkie pliki powinny być zapisywalne tylko przez twoje konto użytkownika.

/wp-includes/

Większość aplikacji WordPress logika: wszystkie pliki powinny być zapisywalne tylko przez twoje konto użytkownika.

/wp-content/

Zawartość dostarczana przez użytkownika: przeznaczona do zapisywania przez konto użytkownika i proces serwera www.

W obrębie /wp-content/ Znajdziesz:

/wp-content/themes/

Pliki motywów. Jeśli chcesz użyć wbudowanego edytora motywów, wszystkie pliki muszą być zapisywalne przez proces serwera www. Jeśli nie chcesz użyć wbudowanego edytora motywów, wszystkie pliki mogą być zapisywalne tylko przez twój konto użytkownika.

/wp-content/plugins/

Pliki Wtyczek: wszystkie pliki powinny być zapisywalne tylko przez twoje konto użytkownika.

Inne katalogi, które mogą występować z /wp-content/ powinny być udokumentowane przez każdą wtyczkę lub motyw wymaga ich. Uprawnienia mogą / align = "left" /

Źródło i dodatkowe informacje: http://codex.wordpress.org/Hardening_WordPress

 49
Author: Kornel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-18 16:49:36

Dla tych, którzy mają swój główny folder WordPress w swoim folderze domowym:

** Ubuntu / apache

  1. Dodaj użytkownika do grupy www-data:

Kredyt nadanie uprawnień do zapisu grupie www-data

Chcesz zadzwonić usermod na swojego użytkownika. Czyli:

sudo usermod -aG www-data yourUserName

** zakładając www-data istnienie grupy

  1. Sprawdź, czy twój użytkownik jest w grupie www-data:

    groups yourUserName

You should get something like:

youUserName : youUserGroupName www-data

** youUserGroupName jest zwykle podobny do Twojej nazwy użytkownika

  1. Rekurencyjnie Zmień własność grupy folderu wp-content zachowując własność użytkownika

    chown yourUserName:www-data -R youWebSiteFolder/wp-content/*

  2. Zmień katalog na youWebSiteFolder / wp-content /

    cd youWebSiteFolder/wp-content

  3. Rekurencyjnie zmień uprawnienia grupy folderów i podfolderów, aby włączyć uprawnienia zapisu:

    find . -type d -exec chmod -R 775 {} \;

** tryb w związku z tym, że nie jest to możliwe, nie jest to możliwe, ponieważ nie jest to możliwe.]}

  1. Rekurencyjnie zmień uprawnienia grupowe plików i pod-plików, aby włączyć uprawnienia zapisu:

    find . -type f -exec chmod -R 664 {} \;

Wynik powinien wyglądać mniej więcej tak:

WAS:
-rw-r--r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
CHANGED TO:
-rw-rw-r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html

Odpowiednik:

Chmod-R ug+RW foldername

Uprawnienia będą jak 664 Dla plików lub 775 dla katalogów.

P. s. jeśli ktoś napotka błąd 'could not create directory' podczas aktualizacji wtyczki, do:
server@user:~/domainame.com$ sudo chown username:www-data -R wp-content
gdy jesteś w katalogu głównym swojej domeny.
Zakładając: wp-config.php ma
poświadczenia FTP na LocalHost
define('FS_METHOD','direct');

 21
Author: Jadeye,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 12:37:31

Ustawiam uprawnienia na:

    # Set all files and directories user and group to wp-user
    chown wp-user:wp-user -R *

    # Set uploads folder user and group to www-data
    chown www-data:www-data -R wp-content/uploads/

    # Set all directories permissions to 755
    find . -type d -exec chmod 755 {} \;

    # Set all files permissions to 644
    find . -type f -exec chmod 644 {} \;

W moim przypadku stworzyłem konkretnego użytkownika dla WordPressa, który różni się od domyślnego użytkownika apache, który uniemożliwia dostęp z internetu do tych plików należących do tego użytkownika.

Następnie daje uprawnienia użytkownikowi apache do obsługi folderu upload i wreszcie ustawić wystarczająco bezpieczne uprawnienia do plików i folderów.

Edytowane

Jeśli używasz W3C Total Cache powinieneś również wykonać następny:

chmod 777 wp-content/w3tc-config
chmod 777 wp-content/cache

rm -rf wp-content/cache/config
rm -rf wp-content/cache/object
rm -rf wp-content/cache/db
rm -rf wp-content/cache/minify
rm -rf wp-content/cache/page_enhanced

Wtedy będzie praca!

Edytowane

Po chwili tworzenia stron WordPress polecam różne uprawnienia plików w zależności od środowiska:

W produkcji nie dałbym użytkownikom dostępu do modyfikowania systemu plików, pozwolę im tylko na przesyłanie zasobów i daje dostęp do niektórych wtyczek konkretnych folderów do robienia kopii zapasowych, itp. Ale zarządzanie projektami pod Git i używanie kluczy wdrażania na serwerze, nie jest dobrym pluginem aktualizacji na etapie ani produkcji. Zostawiam tu plik produkcyjny konfiguracja:

# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/uploads/

w tym celu należy skontaktować się z naszym Biurem Obsługi Klienta.]}

Staging będzie miał takie same uprawnienia produkcyjne, jak powinien być jego klonem.

Wreszcie, środowisko programistyczne będzie miało dostęp do aktualizacji wtyczek, tłumaczeń, wszystkiego...

# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/

# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/themes

# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/plugins/your-plugin

w 2009 roku firma nginx wprowadziła do swojej oferty nowe rozwiązania.]} your-user: root-group = Twój bieżący użytkownik i grupa root

Te uprawnienia dadzą ci dostęp do rozwijaj w folderze themes i your-plugin bez pytania o pozwolenie. Reszta zawartości będzie własnością użytkownika Apache lub Nginx, aby umożliwić WP zarządzanie systemem plików.

Przed utworzeniem repo git uruchom następujące polecenia:

# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;

# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;

 13
Author: Pablo Ezequiel Leone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-07 22:11:31

Poprawne uprawnienia dla pliku to 644 Poprawne uprawnienia dla folderu to 755

Aby zmienić uprawnienia, użyj terminala i następujących poleceń.

find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;

755 dla folderów i 644 dla plików.

 9
Author: Kappa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-13 11:23:41

Najlepiej przeczytać dokumentację WordPressa na ten temat https://codex.wordpress.org/Changing_File_Permissions

  • wszystkie pliki powinny być własnością rzeczywistego konta użytkownika, a nie konta użytkownika używanego w procesie httpd
  • własność grupy nie ma znaczenia, chyba że istnieją specyficzne wymagania grupowe dotyczące sprawdzania uprawnień procesu serwera www. Zwykle tak nie jest.
  • wszystkie katalogi powinny być 755 lub 750.
  • wszystkie pliki powinny być 644 lub 640. Wyjątek: wp-config.php powinno mieć wartość 440 lub 400, aby uniemożliwić innym użytkownikom na serwerze czytanie go.
  • żadnych katalogów nie powinno się podawać 777, nawet katalogów upload. Ponieważ proces php jest uruchomiony jako właściciel plików, otrzymuje uprawnienia właścicieli i może pisać nawet do katalogu 755.
 8
Author: PodTech.io,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-30 10:59:16

Myślę, że poniższe zasady są zalecane dla domyślnej witryny wordpress:

  • Dla folderów wewnątrz wp-content, Ustaw uprawnienia 0755:

    Chmod-R 0755 wtyczki

    Chmod-R 0755 uploads

    Chmod - R 0755 upgrade

  • Niech użytkownik apache będzie właścicielem powyższych katalogów wp-content:

    Chown apache uploads

    Chown apache upgrade

    Chown apache wtyczki

 7
Author: shasi kanth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-27 11:10:45

W rzeczywistości zależy od wtyczek, których zamierzasz użyć, ponieważ niektóre wtyczki zmieniają główny dokument WordPressa. ale ogólnie polecam coś takiego do katalogu wordpress.

Spowoduje to przypisanie "root" (lub jakiegokolwiek użytkownika, którego używasz) jako użytkownika w każdym pojedynczym pliku/folderze, R oznacza rekurencyjny, więc po prostu nie kończy się na folderze "html". jeśli nie użyłeś R, to dotyczy tylko katalogu "html".

sudo chown -R root:www-data /var/www/html  

To ustawi właściciel / Grupa "wp-content" Do "www-data", a tym samym umożliwienie serwerowi www zainstalowania wtyczek za pośrednictwem panelu administracyjnego.

chown -R www-data:www-data /var/www/html/wp-content

To ustawi uprawnienia KAŻDEGO pliku w folderze "html" (w tym plików w podkatalogach) na 644, więc osoby zewnętrzne nie mogą wykonać żadnego pliku, zmodyfikować żadnego pliku, grupa nie może wykonać żadnego pliku, zmodyfikować dowolnego pliku i tylko użytkownik może modyfikować/odczytywać pliki, ale nadal nawet użytkownik nie może wykonać żadnego pliku. Jest to ważne, ponieważ zapobiega wszelkiego rodzaju wykonania w folderze "html", również od właściciela folderu html i wszystkie inne foldery z wyjątkiem folderu wp-content są "root" (lub Użytkownika), www-data nie może modyfikować żadnego pliku poza folderem wp-content, więc nawet jeśli istnieje jakaś luka w serwerze WWW, a jeśli ktoś uzyskał dostęp do witryny nieautoryzowany, nie może usunąć głównej witryny z wyjątkiem wtyczek.

sudo find /var/www/html -type f -exec chmod 644 {} +

To ograniczy uprawnienia dostępu do " wp-config.php " do user / group with RW-R - - - - - te uprawnienia.

chmod 640 /var/www/html/wp-config.php

A jeśli plugin lub aktualizacja skarżył się, że nie może zaktualizować, a następnie dostęp do SSH i użyć tego polecenia, i przyznać tymczasowe uprawnienia do "www-data" (serwer WWW), aby zaktualizować / zainstalować za pośrednictwem panelu administracyjnego, a następnie powrócić do "root" lub użytkownika po zakończeniu.

chown -R www-data /var/www/html

I w Nginx (ta sama procedura dla apache), aby chronić folder wp-admin przed nieautoryzowanym dostępem i sondowaniem. jeśli chcesz dowiedzieć się więcej o naszej ofercie, skontaktuj się z nami, aby dowiedzieć się więcej o naszej ofercie.

sudo apt-get install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd userName

Teraz odwiedź to miejsce

/etc/nginx/sites-available/

Użyj tego kodu, aby chronić folder "wp-admin" hasłem, teraz zapyta hasło / nazwę użytkownika, jeśli próbowałeś uzyskać dostęp do "wp-admin". zauważ, tutaj używasz ".htpasswd " plik zawierający zaszyfrowane hasło.

location ^~ /wp-admin {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    index  index.php index.html index.htm;
}
Teraz uruchom ponownie nginx.
sudo /etc/init.d/nginx restart
 6
Author: Liyanage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-12 13:15:49

Polecenia:

chown www-data:www-data -R *
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Gdzie FTP-user jest użytkownikiem, którego używasz do przesyłania plików

chown -R ftp-user:www-data wp-content
chmod -R 775 wp-content
 3
Author: Iacob Vlad-George,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-06 11:24:36

Nie mogę powiedzieć, czy to jest poprawne, ale używam obrazu Bitnami nad Google Compute App Engine. Mam problemy z pluginami i migracją, a po dalszym brudzeniu rzeczy przez uprawnienia chmod ' Inga, znalazłem te trzy linie, które rozwiązały wszystkie moje problemy. Nie wiem, czy to właściwy sposób, ale zadziałało dla mnie.

sudo chown -R bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type f -exec chmod 664 {} \;
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type d -exec chmod 775 {} \;
 1
Author: wayofthefuture,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-27 19:19:05

Dla OS X użyj tego polecenia:

sudo chown -R www:www /www/folder_name
 1
Author: Abduhafiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-06 15:35:20

Aby absolutnie upewnić się, że Twoja strona jest bezpieczna i używasz poprawnych uprawnień do folderów, użyj wtyczki bezpieczeństwa, takiej jak Ta:

Https://en-ca.wordpress.org/plugins/all-in-one-wp-security-and-firewall/

Https://en-ca.wordpress.org/plugins/wordfence/

Te wtyczki przeskanują Twoją instalację Wordpress i powiadomią Cię o wszelkich potencjalnych problemach. Będą one również ostrzegać o wszelkich niebezpiecznych uprawnień folderu. Oprócz że te wtyczki zalecą ci, jakie uprawnienia powinny być przypisane do folderów.

 1
Author: user296526,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-14 15:39:36

Zdefiniuj w pliku wp_config.

/var/www/html/Twój-projekt-plik / wp-config.php

define( 'FS_METHOD', 'direct' );

Chown-zmienia własność plików / dirs. Ie. właściciel pliku / katalogu zmienia się na podany, ale nie zmienia uprawnień.

sudo chown -R www-data:www-data /var/www
 1
Author: Harish Verma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-31 07:27:48
chown -Rv www-data:www-data
chmod -Rv 0755 wp-includes
chmod -Rv 0755 wp-admin/js
chmod -Rv 0755 wp-content/themes
chmod -Rv 0755 wp-content/plugins
chmod -Rv 0755 wp-admin
chmod -Rv 0755 wp-content
chmod -v 0644 wp-config.php
chmod -v 0644 wp-admin/index.php
chmod -v 0644 .htaccess
 0
Author: Grapehand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-29 20:42:29

Na podstawie wszystkich czytania i dręczenia na moich własnych witrynach i po włamaniu mam pochodzić z powyższej listy, która zawiera uprawnienia do wtyczki bezpieczeństwa dla Wordfence Wordfence. (Niezrzeszony)

W naszym przykładzie root dokumentu wordpress jest /var/www/html/example.com / public_html

Otwórz uprawnienia, aby www-data mogła zapisywać do katalogu głównego dokumentu w następujący sposób:

cd /var/www/html/example.com
sudo chown -R www-data:www-data public_html/

Teraz z Pulpitu Nawigacyjnego w Twojej witrynie, jako administrator może wykonywać aktualizacje.

Zabezpiecz witrynę po zakończeniu aktualizacji, wykonując następujące kroki:

sudo chown -R wp-user:wp-user public_html/

Powyższe polecenie zmienia uprawnienia do wszystkich instalacji wordpress na użytkownika wordpress FTP.

cd public_html/wp-content
sudo chown -R www-data:wp-user wflogs
sudo chown -R www-data:wp-user uploads

Powyższe polecenie zapewnia, że wtyczka bezpieczeństwa Wordfence ma dostęp do swoich dzienników. Katalog uploads jest również zapisywalny przez www-data.

cd plugins
sudo chown -R www-data:wp-user wordfence/

Powyższe polecenie zapewnia również, że wtyczka bezpieczeństwa ma wymagany dostęp do odczytu zapisu dla jego prawidłowego funkcja.

Uprawnienia do katalogów i plików # Ustaw wszystkie uprawnienia katalogów na 755 znajdź . - type d-exec chmod 755 {}\;

# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;

Ustaw uprawnienia dla wp-config.php do 640 tak, że tylko WP-user może odczytać ten plik i nikt inny. Uprawnienia 440 nie działały dla mnie z powyższą własnością pliku.

sudo chmod 640 wp-config.php

Automatyczne aktualizacje WordPressa przy użyciu SSH działały z fine z PHP5, ale zerwały z PHP7.0 z powodu problemów z php7. 0-SSH2 bundeld z Ubuntu 16.04 i Nie mogłem znaleźć, jak zainstalować odpowiednią wersję i sprawić, by działała. Na szczęście bardzo niezawodna wtyczka o nazwie SSH-SFTP-updater-support (Darmowa) umożliwia automatyczne aktualizacje przy użyciu SFTP bez potrzeby użycia libssh2. Tak więc powyższe uprawnienia nigdy nie muszą być poluzowane, z wyjątkiem rzadkich przypadków w razie potrzeby.

 0
Author: spinozarabel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 08:36:52