1

Я настраиваю небольшой веб-сервер. У меня проблемы с Apache, так как я не могу найти псевдоним. Мой DocumentRoot - это /var /www /htdocs, но у меня есть несколько файлов в другом (большем) разделе в /home /user /Documents /a_directory /CurrentCaptures, которые я хочу просматривать на веб-сайте.

Мой /var/www/conf/httpd.conf имеет 2 псевдонима:

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons/">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

# Added by me
Alias /CurrentCaptures "/home/user/Documents/a_directory/CurrentCaptures"

<Directory "/home/user/Documents/a_directory/CurrentCaptures">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Я оставил /icons/ alias там, чтобы протестировать его, и если я захожу на http://localhost/icons/ в браузере, он работает. Но когда я пытаюсь перейти на http://localhost/CurrentCaptures/ я получаю ошибку 404 Not Found.

В /var /www /logs /error_log я получаю эту ошибку:

[Пн Авг 4 11:02:30 2014] [ошибка] [клиент 192.168.10.100] Файл не существует: /home /user /Documents /a_directory /CurrentCaptures /

Есть идеи?

1 ответ1

0

Процесс Apache, скорее всего, не имеет прав доступа в /home /user.

Apache обычно работает как непривилегированный пользователь (обычно называется "http", "httpd" или «www-data», но существуют вариации). Этот пользователь не имеет права заходить в домашний каталог другого пользователя.

Если вас не интересует безопасность, самый простой способ обойти это - добавить разрешение на мировое выполнение для каталогов (что-то вроде режима 0711) и разрешение на мировое чтение (0644) для файлов, которые вы хотите предоставить в Интернете сервер. В каталоге "выполнить" означает спуск в каталог, а "чтение" означает перечисление файлов в каталоге. Таким образом, предоставляя разрешение на выполнение, вы разрешаете веб-серверу читать известные файлы (с учетом прав доступа к файлу), но не перечислять содержимое каталога.

Более "правильным" решением было бы переместить файлы в иерархию каталогов, которая не зависит от пользователя. Вы можете сделать это, например, либо переместив файлы в другое место (за пределами домашнего каталога конкретного пользователя), либо с помощью bind mounts. Права доступа к файлам все равно будут действовать, поэтому файлы должны быть доступны для чтения веб-серверу, но вам не нужно предоставлять веб-серверу доступ к вашему домашнему каталогу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .