Проблема с правами доступа 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 с mod_php
  • Как установить и настроить ImageMagick для PHP и Wordpres на Amazon Linux AMI
  • Владение Apache и разрешения для wordpress
  • Найти и заменить в сообщениях Wordpress
  • Окно Centos 6.6 с одним сайтом Wordpress - вне памяти: процесс удаления httpd неоднократно
  • Что действительно делает этот код?
  • Apache httpd on centos не маскирует ip для домена
  • Как найти сайт на общем сервере, который генерирует HTTP-запросы
  • Wordpress не узнает базу данных MySQL
  • Как установить WP-CLI для всех пользователей на CentOS 7
  • Interesting Posts

    Как сохранить пару ключей имени пользователя и пароля в SSH в GIT Bash?

    Apache 2.4.12 Проблема обновления с OpenSSL 1.0.2c

    Сервер Debian на чипсете Intel Core i3 и Intel Q57 – будет ли он работать?

    Getmail: сброс соединения с помощью одноранговой сети (IMAP Idle)

    Восстановление большого раздела на меньший раздел с помощью Clonezilla

    Начать процесс на другом tty

    В чем разница `/ etc / modules-load.d` и` / etc / modules`?

    Как удалить приложения, которые были установлены с помощью команды tar

    Postfix игнорирует карточные карты pcre для отправителя

    csh: Как сохранить среду оболочки (env, current dir, shell history) в файле и установить ее в другой оболочке?

    Bash $ PROMPT_COMMAND испортил отображение истории прокрутки

    (IP-телефония, VoIP и видеоконференции) Конфигурация Ekiga для локальной сети с той же подсети

    Как сохранить зашифрованный пароль rdesktop для упрощения входа?

    Открытие файла с программой в фоновом режиме из оболочки

    SSD сломан? GParted выход

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