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.

Теперь, когда я перехожу к http://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. Есть идеи?

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

88
задан 10 March 2019 в 10:47

6 ответов

Выполните chmod + x в своем пользовательском каталоге и перезапустите apache. 755 разрешений должны работать. У меня были проблемы с 644 .

109
ответ дан 10 March 2019 в 10:47

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

getenforce

. Если отображается "Enforcing", попробуйте

setenforce 0

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

18
ответ дан 10 March 2019 в 10:47

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

chcon -R -t httpd_sys_content_t ~/public_html/
34
ответ дан 10 March 2019 в 10:47
  • 1
    Я попробовал это также. Я загрузился от живого USB, выполнил восстановление начальной загрузки. К сожалению, didn' t справка. – Shreyansh Gandhi 25 October 2015 в 21:17

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

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

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

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

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

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

17
ответ дан 10 March 2019 в 10:47
  • 1
    ничего себе, я can' t полагают, что я пропустил это. Я знал, что мне был нужен он, только один из тех моментов ООП. спасибо – Hunter Robertson 17 October 2015 в 05:32

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

После того, как я запустил эту команду на хосте и повторно развернул, все было в порядке:

sudo apt-get install --install-recommends linux-generic-hwe-16.04 
1
ответ дан 10 March 2019 в 10:47
  • 1
    Спасибо за ответ, однако это doesn' t работают на меня. I' ve должен был сделать новую установку (приблизительно 5 раз) каждый раз, когда я пытаюсь установить драйверы. Единственное время я могу заставить его несколько работать, после новой установки я перехожу к Дополнительным Драйверам и выбираю Двоичные драйверы Nvidia-346, однако мне нужны 352 для использования CUDA 7.5 и когда я устанавливаю драйвер с помощью .run файла, я всегда заканчиваю с циклом входа в систему после перезагрузки; Когда я смотрю/var/crash, ошибка маркирована как ошибка клавиатуры, достаточно странно – Plopperzz 18 October 2015 в 06:09

Вместо предоставления доступа к домашним каталогам ~ и ~ / public_html ( например от chmod 755 ... ) для для всех пользователей, в качестве альтернативы можно добавить пользователя apache2 (обычно www-data для Ubuntu) в личную группу текущего пользователя (группа с тем же именем, что и имя пользователя ):

sudo adduser www-data $(whoami)
sudo service apache2 reload

(при условии, что ~ / public_html принадлежит к группе пользователей по умолчанию.)

Это имеет значение, когда есть несколько пользователей, и важно, чтобы пользователи не имели доступа к домашним папкам друг друга.

0
ответ дан 20 August 2021 в 14:19

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

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