Apache: доступ запрещен, поскольку разрешения поиска отсутствуют

Я знаю, что этот вопрос задают много, но решения, которые я видел, не работали для меня.

У меня только один виртуальный хост включен, и я пытаюсь включить доступ к папке это не под корнями документа

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

Alias /movies /home/username/Videos/Movies

<Directory /home/username/Videos/Movies/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Я установил /etc/apache2/envvars следующим образом

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=public

Я убедился, что / home / username / Videos / и его субфлоры принадлежат username:public, установите разрешения 777 (после того, как 775 не сработало) и убедитесь, что пользователь www-data принадлежит группе public.

Теперь, когда я вхожу в localhost/movies, я получаю

[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path

Но когда я установил /etc/apache2/envvars для запуска Apache под username (мое собственное имя пользователя), все работает отлично. Проблема связана с разрешением, но я не вижу, как в моем случае, особенно когда я устанавливаю разрешения на 777. Любые идеи?

P.S. Версия Ubuntu - 14.04, Apache - 2.4.7, и я не редактировал другие файлы конфигурации.

1
задан 21 March 2017 в 00:44

4 ответа

Если в случае проблемы selinux, а не просто отключите его, эта страница и эта страница предоставляют команду для предоставления доступа:

chcon -R -t httpd_sys_content_t ~/public_html/
18
ответ дан 24 May 2018 в 09:07
  • 1
    Я был уверен, что это моя проблема. Проклятый CentOS! Thx для команды работает отлично. – Balmipour 22 March 2017 в 16:28
  • 2
    спасибо, просто пришлось заменить часть ~/public_html/ корневым каталогом содержимого, которое я пытался обслуживать. – trpt4him 17 October 2017 в 20:26
  • 3
    chcon -R -t httpd_sys_content_t /var/www/html/phpmyadmin/ (в моей ситуации) – gibberish 28 February 2018 в 23:42

Возможно, у вас есть selinux. Попробуйте

getenforce

Если он показывает «Enforcing», попробуйте

setenforce 0

и попробуйте, если это исправляет вашу проблему.

16
ответ дан 24 May 2018 в 09:07
  • 1
    Не просто отключите SELinux как исправление. Исправьте проблемы SELinux, переназначив порты или установив булев. – siride 13 March 2018 в 19:45

Я столкнулся с той же проблемой, после нескольких часов попыток я нашел решение, которое точно решает проблему:

https://wiki.apache.org/httpd/13PermissionDenied

В принципе, сервер Apache не только требует разрешения на чтение всех файлов, которые он обслуживает, но и разрешения на выполнение всех каталогов на пути вашего виртуального хоста.

Утилита namei может использоваться для поиска проблем с разрешениями перечисляя разрешения по каждому компоненту пути:

namei -m /usr/local/apache2/htdocs/foo/bar.html

В моем случае каталог на моем пути имеет разрешение 700, это вызывает проблему. После изменения на 701 проблема была решена.

7
ответ дан 24 May 2018 в 09:07
  • 1
    Ссылка здесь полезна, потому что она объясняет проблему: одному из узлов в пути к каталогу не хватает разрешений на поиск. Используйте " имя " команду, чтобы найти это, а затем «chmod». до 755. – user3751385 29 December 2017 в 05:50

У меня возникла эта проблема, когда я пытался запустить apache в контейнере docker на хосте Ubuntu 16.04, который использовал ядро ​​4.4 вместо 4.10.

Как только я запустил эту команду на хосте и re-deployed, я был в порядке:

sudo apt-get install --install-recommends linux-generic-hwe-16.04 
0
ответ дан 24 May 2018 в 09:07

Другие вопросы по тегам:

Похожие вопросы: