Общий вопрос о правах доступа к файлам в Linux: Apache и WordPress

Asked
Viewd18338

17

Я перешел с виртуального хостинга на VPS несколько недель назад, и у меня возникли неприятные проблемы с разрешениями в WordPress. Вы знаете, что можете загружать и обновлять плагины (и сам wordpress) из панели администратора, но после того, как я переместил его, он начал спрашивать мои учетные данные FTP, что довольно медленно, когда мне нужно обновить ~ 20 плагинов.

Я думаю, это должна быть какая-то проблема с правами. Я посмотрел, что файлы wordpress на виртуальном хостинге, все они принадлежат имени пользователя и группе kovshenin (kovshenin: kovshenin), файлы - -rw-r - r-, а каталоги - drwx-r-xr-x.

На моем VPS apache работает под управлением apache: apache, а мои файлы - kovshenin: kovshenin. Что мне сделать, чтобы они были доступны для чтения и записи как для kovshenin, так и для apache?

Кроме того, я изменил разрешения на 0777 для всех файлов и папок в моей установке WordPress, что позволило мне устанавливать и удалять плагины без FTP, но когда я перешел на автоматическое обновление до WordPress 2.8.1, он все еще запрашивал у меня мои Учетная запись FTP. Это проблема с wp или я что-то пропустил?

Спасибо.

Обновление : мне удалось запустить id и id www-data на общем хостинге MediaTemple. Пользователь kovshenin находится в группе kovshenin, а www-data находится в группе www-data. Больше никаких групп. В чем фокус?

Еще одно обновление . Хорошо, я добавил пользователя apache в группу kovshenin, мои файлы wordpress - kovshenin:kovshenin с разрешениями rw-rw-r-- и разрешениями drwxrwxr-x на каталоги, но что-то все равно не так. Пользователь apache может получить доступ к файлам и папкам, я могу использовать онлайн-редактор тем и плагинов в панели администратора wordpress, я могу вносить изменения в файл .htaccess из Wordpress, но установка плагина / темы по-прежнему требует от меня Учетные данные FTP!

Есть идеи? Спасибо.

  • Нет. www-data находится на общем хостинге, а apache работает под www-data. Пользователь apace находится на моем VPS, и он работает под управлением пользователя и группы apache: apache.

    kovshenin11 июля 2009, 14:09
  • Вы хотите сказать, что apache, работающий под управлением apache: apache, может получать доступ к файлам WordPress с помощью www-data: www-data? Если да, то узнайте, как он этим управляет, и настройте то же самое с kovshenin: kovshenin.

    Troubadour11 июля 2009, 13:59

5 ответов

23

Что мне сделать, чтобы они были доступны для чтения и записи как kovshenin, так и apache?

  • Создайте новую группу, скажите "wordpress".
  • Добавьте пользователей koveshenin и www-data в группу wordpress.
  • Измените владельца группы всех файлов на wordpress (используя chgrp).
  • Убедитесь, что все файлы доступны для групповой записи.
  • Установите бит разрешения g + s (setgid) для всех интересующих каталогов .
  • Убедитесь, что umask kovshenin и apache по умолчанию включает групповые права на чтение и запись.

Второй последний шаг - уловка. Это означает, что всякий раз, когда kovshenin или apache создает файл в этих каталогах, владельцем группы будет wordpress (вместо kovshenin или apache).

  • @Steffen: Если wordpress не является владельцем, файлы должны быть 644 (а каталоги 2775).

    caf10 июня 2010, 23:25
  • @caf: Ааа, отлично, тогда я понял :-) Что ж, я попробую сегодня вечером, большое спасибо за разъяснения.

    Steffen09 июня 2010, 06:55
  • Да, ваша umask, вероятно, 0022, вам нужно установить его на 0002. Кстати, ковшенину даже не обязательно быть в группе apache, чтобы это работало.

    caf12 июля 2009, 05:33
  • Ну что ж, теперь я отказываюсь от этого, я просто соглашусь на доступ по FTP для обновления, по крайней мере, это работает из коробки :-D

    Steffen14 июня 2010, 05:16
  • @caf: что за первые 2 в каталогах? Я всегда думал, что есть только гость из группы владельцев? В любом случае всех файлов и каталогов уже 775.

    Steffen11 июня 2010, 09:23
  • Хорошо, это ближе, большое спасибо, но почему у пользователя www-data и kovshenin в учетной записи виртуального хостинга Media Temple нет дополнительных групп? Как называется этот трюк? ;)

    kovshenin11 июля 2009, 14:11
  • Не могли бы вы подробнее рассказать, как установить маску? Я использую Debian и пробовал установить его в .bashrc для пользователя, но безуспешно.

    Steffen08 июня 2010, 17:42
  • Я попробую, спасибо. Еще один вопрос: setgid - это команда или? Я попытался ввести setgid в Debian, но он этого не знал (тоже мог найти что-нибудь через apt)

    Steffen09 июня 2010, 06:15
  • @Steffen: установка .bashrc будет работать для обычных учетных записей пользователей; для apache, начатого с init.d, вы можете добавить строку, устанавливающую umask в /etc/default/apache2.

    caf08 июня 2010, 22:06
  • Трудно сказать, но учетную запись общего хостинга можно настроить с помощью phpsuexec.

    caf11 июля 2009, 14:39
  • @Steffen: Бит «setgid» - это бит прав доступа к файлу, поэтому он установлен как chmod. В частности, вам нужно chmod g+s для интересующих каталогов.

    caf09 июня 2010, 06:42
  • Привет, кафе, еще один вопрос. Я изменил владельца группы для всех файлов и каталогов в папке wp на apache, владельцем по-прежнему является kovshenin, поэтому это kovshenin: apache и права 0775, поэтому и kovshenin, и apache имеют права на чтение, запись и выполнение файлов. Работает отлично. Я сделал g + s часть, новые файлы создаются с помощью kovshenin: apache, все нормально, НО, права для нового файла - 755. Как исправить это для 775? Пробовал настройки g + ws .. Не работает. Есть идеи?

    Еще раз спасибо.

    kovshenin11 июля 2009, 17:44
  • Я заставил большую часть этого работать, хотя мне все еще не везет с автоматическими обновлениями в wordpress.

    Все файлы 775 (chmod), владелец - мой пользователь, группа - wordpress. Кроме того, я установил группу пользователей по умолчанию как wordpress и установил g + s для всех каталогов (и файлов, я думаю, просто сделал * :-D)

    Однако файлы по-прежнему создаются с 644 правами, так что моя маска umask не действует.

    Как бы то ни было, это небольшая проблема, но важнее то, что wordpress по-прежнему запрашивает доступ по FTP. Может быть, wordpress должен быть владельцем файлов? (chown)

    Steffen10 июня 2010, 18:36
  • Ой, извините, это должно быть маска .. =)

    kovshenin11 июля 2009, 17:48
1

Вы можете передать право собственности на www-data согласно здесь .

Выполните следующую команду в каталоге WordPress (требуется sudo):

 sudo chown -Rf www-data *
 

Работает для Apache.

  • Какая команда? Прочтите, что я пытаюсь сделать, это не так просто .. Нет дополнительных групп.

    kovshenin11 июля 2009, 13:49
  • Это работает нормально, но я не могу редактировать эти файлы с помощью обычного пользователя, и это меня пугает .. :(

    kovshenin11 июля 2009, 13:24
  • Вы можете добавить своего обычного пользователя в группу www-data или добавить sudo в начало вашей команды.

    KahWee Teng11 июля 2009, 13:44
  • Разве это не группа Ковшенина? Вы должны иметь возможность редактировать их, если они есть.

    В противном случае вы можете попробовать сделать пользователя kovshenin членом группы, которой он принадлежит, и использовать newgrp, чтобы изменить свою группу на эту, прежде чем редактировать их.

    Troubadour11 июля 2009, 13:39
  • caf есть ответ, который вы хотите.

    KahWee Teng11 июля 2009, 16:35
  • Это группа, принадлежащая kovshenin, но новые файлы, которые я загружу от пользователя kovshenin, станут kovshenin: kovshenin и мне придется снова чавкать. Я настраиваю хостинг для нескольких своих клиентов, и мне бы хотелось, чтобы их файлы были в стиле kovshenin: kovshenin, а не apache (или www-data). Интересно, как это удалось MediaTemple? ..

    kovshenin11 июля 2009, 13:42
0

У меня была та же проблема, и я решил ее, отключив PHP safe_mode в plesk, теперь WP может без проблем создавать папки и перемещать файлы.

Надеюсь, это вам поможет.