Символические ссылки Apache

Второй раз потратил около часа на конфигурирование apache с символическими ссылками. И что-бы больше на эти грабли не наступать, решил записать основные моменты. Описываю конфигурацию для Centos 6, и для большенства других систем. В список этих систем точно не входит Ubuntu, и возможно, Debian (достоверно не знаю). В Ubuntu, apt занимается управлением модулями apache, потому структура каталогов немного переиначена и сервис называется apache2, а не httpd. На этом различая заканчиваются (исходя из моего опыта).



И так, конфигурация сервера лежит:
/etc/conf/httpd.conf - основной конфигурационный файл, который инклюдит в себя все файлы *.conf из каталога /etc/conf.d
/etc/conf.d - сюда можно кидать конфигурации для подкаталогов и виртуальных серверов.

В моем случае все очень просто, в соответствующем блоке "Directory" файла "httpd.conf" нужно дописать некоторые опции (привожу весь блок):
<Directory "/var/www/html">
    Options +Indexes +FollowSymLinks -SymLinksIfOwnerMatch
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory> 
Подробное описание всех блоков можно найти в документации на apache.
Теперь, перезагружаем демон. 
# service httpd restart
И создаем символическую ссылку:
# ln -s <источник> <путь к ссылке>
После всех этих действий, скорее всего, ничего не заработает. Причина кроется в том, что apache не может получить доступа к файлам, на которые указывает ссылка. Решение в этом случае заключается в разрешении читать все каталоги на пути к целевым файлам. Пример:
Символическая ссылка указывает на /home/vasia/test/data
Допустим, доступ к каталогам в этом пути распределен так:
home 755
vasia 700
test 750
data 755
Тогда, сервер не сможет ничего прочесть. Приходится менять права на всем пути следования:
# chmod 755 /home/vasia
# chmod 755 /home/vasia/test
После этих действий, доступ к файлам по ссылке должен быть открыт. Удачи.

PS: Существуют вариации на тему (мне пока не довелось их проверить). Во первых, можно не выключать флаг SymLinksIfOwnerMatch и просто изменить владельца файлов, на которые указывает ссылка. Это даст бонус к защите.
Во вторых, можно жестче ограничить права на домашнюю папку, но добавить пользователя apache в группу пользователя. 

Комментарии

Отправить комментарий

Популярные сообщения из этого блога

Siege Up! Editor (beta)

STM32F4 и программный выход в DFU

Git и Yandex.Disk