Символические ссылки 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" нужно дописать некоторые опции (привожу весь блок):
Символическая ссылка указывает на /home/vasia/test/data
Допустим, доступ к каталогам в этом пути распределен так:
PS: Существуют вариации на тему (мне пока не довелось их проверить). Во первых, можно не выключать флаг SymLinksIfOwnerMatch и просто изменить владельца файлов, на которые указывает ссылка. Это даст бонус к защите.
Во вторых, можно жестче ограничить права на домашнюю папку, но добавить пользователя apache в группу пользователя.
И так, конфигурация сервера лежит:
/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 в группу пользователя.
адениум дома семена и взрослые адениумы
ОтветитьУдалитьДобавление материала
разместить статью с активной ссылкой сайт с высоким ИКС