Проблема с правами доступа Apache2

Я изменил свой DocumentRoot на /home/user/www . Для этого я только что изменил 2 вхождения пути в / etc / apache2 / sites-available / default.

Разрешения / home / user / www – 0774. Я добавил пользователя www-data в группу моего пользователя, а владелец /home/user/www – это мой собственный пользователь и группа (пользователь: пользователь).

Я сделал это:

 sudo chmod -R 0774 www sudo chown -R user:user www sudo adduser www-data user 

Проблема в том, что Apache не может писать в этот каталог. Он может писать, только если я устанавливаю www-data как владельца, но если я это сделаю, я не могу писать в каталоге.

Я проверил разрешения с помощью:

 sudo -u www-data ls /home/user/www sudo -u www-data cat /home/user/www/some-file 

и это работает.

Но WordPress я на www не могу удалить или создать файлы. Есть идеи?

3 Solutions collect form web for “Проблема с правами доступа Apache2”

Вам было бы лучше с www-каталогом в / var / www, с www-данными владельца и групповыми www-данными, и добавлением вашего пользователя в группу www-data .

Сначала измените DocumentRoot и т. Д. Обратно в / var / www в конфигурации apache.

Каталог / var / www (и все его подкаталоги) должен быть setgid, так что файлы и dir создаются с использованием групповых www-данных.

Все следующие действия должны выполняться как root, или с помощью sudo:

 mkdir -p /var/www 

если в файле / home / user / www есть файлы, которые вы хотите сохранить, переместите их в / var / www сейчас:

 mv /home/user/www/* /var/www/ 

Теперь исправьте разрешения и права собственности на каталог / var / www.

 chown -R www-data:www-data /var/www chmod -R 775 /var/www find /var/www -type d -print0 | xargs -0r chmod g+s adduser user www-data 

В следующий раз, когда «пользователь» войдет в систему (или newgrp www-data ), у них должно быть разрешение на запись в / var / www

BTW, если вы хотите, чтобы «пользователь» мог найти веб-файлы, просто создайте символическую ссылку в своем домашнем каталоге:

  ln -s /var/www/ /home/user/ 

Для доступа к чтению и записи важно иметь разрешения на выполнение для родительских каталогов (в вашем случае / home / user). Проверьте этот ответ.

Вы используете корень в / home / user / www (который подпадает под домашний каталог пользователя и домашние каталоги по умолчанию до 700 разрешений на момент создания. Попробуйте создать корень для apache где-то еще, например. /apache/www

Если ваш дистрибутив использует что-то вроде SELinux или App Armor, вам, скорее всего, придется предоставить доступ к процессу Apache, чтобы он «разрешил» доступ к области домашнего каталога.

SELinux Booleans

Вы можете использовать эту команду, чтобы просмотреть список булевых элементов, связанных с httpd (Apache).

 $/usr/sbin/getsebool -a | grep httpd allow_httpd_anon_write --> off allow_httpd_bugzilla_script_anon_write --> off allow_httpd_mod_auth_pam --> off allow_httpd_nagios_script_anon_write --> off allow_httpd_squid_script_anon_write --> off allow_httpd_sys_script_anon_write --> off httpd_builtin_scripting --> on httpd_can_network_connect --> off httpd_can_network_connect_db --> off httpd_can_network_relay --> off httpd_disable_trans --> off httpd_enable_cgi --> on httpd_enable_ftp_server --> off httpd_enable_homedirs --> on httpd_rotatelogs_disable_trans --> off httpd_ssi_exec --> off httpd_suexec_disable_trans --> off httpd_tty_comm --> on httpd_unified --> on 

Это логическое значение должно быть включено:

 httpd_enable_homedirs --> on 

Контекстные ярлыки

Кроме того, вам нужно добавить контекст SELinux (метку) в каждый каталог, который по существу сообщает SELinux, что к этому каталогу или файлу разрешен доступ с помощью любого сервиса / демона, связанного с этим ярлыком. Apache (httpd) использует этот ярлык:

 httpd_sys_content_t:s0 

Поэтому вам нужно запустить эту команду, chcon чтобы добавить эту метку в файлы / каталоги в / home. Добавляйте ярлык только в каталог, где Apache будет обслуживать файлы.

 $ chcon -R -t httpd_sys_content_t /home/user/www 

Вы можете подтвердить, что это сработало с использованием переключателя -Z в ls , который показывает вам метки контекста.

 $ ls -Z /var/www/manual/ drwxr-xr-x root root system_u:object_r:httpd_sys_content_t:s0 mod 

Рекомендации

  • 5,7. Контексты SELinux – файлы для маркировки
  • Сокращение Apache-спама
  • Локальная установка WordPress на Mint -need для установки глобального NameServer
  • Найти и заменить в сообщениях Wordpress
  • Вставить строку в файлы с несколькими типами файлов
  • Linux Wordpress не может писать файл wp-config
  • Что действительно делает этот код?
  • Какой пользователь использует Wordpress?
  • FreeBSD jails - Nginx, PHP-FPM, Wordpress - папка Share между jails (только для чтения)
  • Получение 403 в любом php, расположенном в папках wp
  • My Ubuntu 16.04 Установка с WordPress продолжает открывать процессы apache2, поедая память
  • перенаправление веб-сервера?
  • Interesting Posts

    Никакая звуковая карта не обнаружена в Linux Mint 18.1 (и Windows 10) после установки с двойной загрузкой на ноутбуке Asus UX410UQ (Kabylake)

    Нет интернета на wlan, тогда eth0 устанавливается на статический

    OpenVPN Укажите сетевое соединение по аналогичному диапазону IP

    Монтирование корневого раздела Arch

    множественные шлюзы по умолчанию для интерфейсов псевдонимов

    Скопировать изображение из буфера обмена в файл

    Ограничение количества одновременных подключений по всей системе?

    OpenLDAP: Как добавить домашний каталог для пользователей?

    btrfs ERROR: ошибка во время балансировки – на устройстве нет места

    Обновление от Ubuntu до Crunchbang?

    Как скомпилировать xbindkeys

    как рассчитать среднее значение столбца с идентификатором строки?

    Как заставить локальный захват кода выхода?

    Как напечатать определенные поля, если выполнено условие

    Как полностью удалить каталог из общего ресурса rsync

    Linux и Unix - лучшая ОС в мире.