Вопрос или проблема
Я настроил разрешения файлов в соответствии с здесь вот так.
Пользователь apache
управляет сервером, а пользователь wordpress
является владельцем директории, этот пользователь используется только для этого сайта.
drwxr-xr-x 5 wordpress wordpress 4096 Apr 12 01:12 .
drwxr-xr-x 10 root root 4096 Apr 10 16:19 ..
-rw-r--r-- 1 wordpress wordpress 418 Sep 25 2013 index.php
-rw-r--r-- 1 wordpress wordpress 19929 Jan 18 2013 license.txt
-rw-r--r-- 1 wordpress wordpress 3193 Jan 27 20:18 readme-ja.html
-rw-r--r-- 1 wordpress wordpress 10156 Jan 27 20:18 readme.html
-rw-r--r-- 1 wordpress wordpress 4892 Oct 4 2013 wp-activate.php
drwxr-xr-x 9 wordpress wordpress 4096 Jan 27 20:18 wp-admin
-rw-r--r-- 1 wordpress wordpress 271 Jan 9 2012 wp-blog-header.php
-rw-r--r-- 1 wordpress wordpress 4795 Sep 6 2013 wp-comments-post.php
-rw-r--r-- 1 wordpress wordpress 4255 Jan 27 20:18 wp-config-sample.php
-r--r----- 1 wordpress wordpress 4471 Apr 12 01:12 wp-config.php
drwxrws--- 5 wordpress wordpress 4096 Apr 12 11:41 wp-content
-rw-r--r-- 1 wordpress wordpress 2932 Sep 25 2013 wp-cron.php
drwxr-xr-x 12 wordpress wordpress 4096 Jan 27 20:18 wp-includes
-rw-r--r-- 1 wordpress wordpress 2380 Oct 25 07:58 wp-links-opml.php
-rw-r--r-- 1 wordpress wordpress 2359 Oct 25 07:58 wp-load.php
-rw-r--r-- 1 wordpress wordpress 31909 Dec 4 05:12 wp-login.php
-rw-r--r-- 1 wordpress wordpress 8235 Nov 13 20:58 wp-mail.php
-rw-r--r-- 1 wordpress wordpress 10880 Nov 5 09:24 wp-settings.php
-rw-r--r-- 1 wordpress wordpress 25665 Nov 13 12:23 wp-signup.php
-rw-r--r-- 1 wordpress wordpress 4026 Oct 25 07:58 wp-trackback.php
-rw-r--r-- 1 wordpress wordpress 3015 Oct 25 11:29 xmlrpc.php
$ ls -la wp-content/
total 24
drwxrws--- 5 wordpress wordpress 4096 Apr 12 11:41 .
drwxr-xr-x 5 wordpress wordpress 4096 Apr 12 01:12 ..
-rw-rw---- 1 wordpress wordpress 28 Jan 9 2012 index.php
drwxr-xr-x 3 wordpress wordpress 4096 Jan 27 20:18 languages
drwxr-x--- 4 wordpress wordpress 4096 Jan 27 20:18 plugins
drwxrws--- 5 wordpress wordpress 4096 Jan 27 20:18 themes
И добавьте пользователя apache
в группу wordpress
.
$ id apache
uid=48(apache) gid=48(apache) groups=48(apache),503(wordpress)
Но с этими разрешениями я не могу обновить сам WordPress или плагины. Какой каталог должен быть записываемым, чтобы обновить правильно и сохранить как можно более безопасно?
Tetsu, в Кодексе есть несколько хороших рекомендаций по этому поводу:
http://codex.wordpress.org/Changing_File_Permissions
К сожалению, в Кодексе нет универсального решения. Это может зависеть от вашего хостинга.
Ответ или решение
Для обновления WordPress и установки плагинов или тем важно правильно настроить разрешения для файлов и директорий. Ваша конфигурация выглядит неплохо, но, как вы заметили, может потребоваться дополнительная настройка, чтобы обеспечить корректную работу обновлений и при этом поддерживать безопасность вашего сайта.
1. Обзор текущих прав доступа
Ваша настройка прав доступа, которую вы привели, подразумевает, что пользователь wordpress является владельцем файлов и директорий, а пользователь apache добавлен в группу wordpress. Это обеспечивает доступ Apache к файлам, однако существует вероятность того, что права на запись для необходимых директорий не установлены должным образом.
2. Необходимые директории для обновлений
Для успешного обновления WordPress, особенно если вы хотите делать это через админ-панель, вам потребуется, чтобы следующие директории были доступны для записи:
- wp-content/ — Эта директория используется для хранения загружаемых файлов, плагинов и тем.
- wp-content/plugins/ — Здесь хранятся файлы всех установленных плагинов и их обновления.
- wp-content/themes/ — В этой директории находятся темы. Если вы хотите обновлять темы, необходимо, чтобы и эта директория была доступна для записи.
- wp-content/upgrade/ — Если вы никогда не создавали эту директорию, WordPress может автоматически создать её во время обновления. Убедитесь, что права на запись установлены для неё.
3. Настройка прав доступа
Запустите следующие команды, чтобы установить правильные права на директории:
# Это назначит директорий и файлам права для записи пользователю apache и группе wordpress.
chmod -R 775 wp-content
Это установит права rwxrwxr-x
для всех директорий и файлов внутри wp-content
, что даст пользователю apache
разрешения на запись. Также убедитесь, что директория wp-content/upgrade
существует:
mkdir -p wp-content/upgrade
chmod 775 wp-content/upgrade
4. Убедитесь, что все пользовательские параметры верны
Проверьте, что пользователь apache
находится в группе wordpress
. Вы уже это сделали, и вывод команды id apache
подтвердил, что apache
является членом группы wordpress
.
5. Итоги
Стандартный подход для обновления WordPress — это сделать директории wp-content/, wp-content/plugins/, wp-content/themes/ и wp-content/upgrade/ доступными для записи для пользователя apache
. Следует помнить, что хотя предоставление прав на запись может облегчить работу с обновлениями, это также может привести к возможным уязвимостям, если права настроены слишком широко. Поэтому важно регулярно проверять безопасность вашего сайта.
Рекомендации по безопасности
- Ограничьте доступ: Поддерживайте минимально возможные права на запись и регулярные проверки файлов на изменения.
- Регулярно обновляйте WordPress: Убедитесь, что вы используете последнюю версию WordPress, чтобы избежать уязвимостей.
- Резервное копирование: Регулярно создавайте резервные копии ваших данных, чтобы можно было быстро восстановиться в случае проблем.
Следуя этим рекомендациям, вы сможете успешно обновлять WordPress и поддерживать его безопасность на высоком уровне.