Назад | Перейти на главную страницу

Разрешение пути Apache HTTPd FollowSymLinks

Я настраиваю свою среду разработки с использованием базовой конфигурации Apache HTTPd.

Но, чтобы избежать частых проблем, я хочу сопоставить свой тестовый URL-адрес с моей папкой разработки.

Я использую Ubuntu.

Мой путь развития находится в следующем примере пути:

/home/myusername/myworkspace/hptargetpath/src/pages

Учитывая следующее отображение символических ссылок:

#ls -l /opt/share/www/mydevelopmentrootpath:
lrwxrwxrwx 1 root root 77 2011-02-13 18:53 /opt/share/www/mydevelopmentrootpath -> /home/myusername/myworkspace/hptargetpath/src/pages

С помощью этого сопоставления папок я настроил Apache HTTPd со следующей конфигурацией:

<VirtualHost *:*>
        ServerName local.server.com
        ServerAdmin some@test.com
        DirectoryIndex index.html

        DocumentRoot /opt/share/www/mydevelopmentrootpath

        <Directory /opt/share/www/mydevelopmentrootpath/ >
                Options +Indexes
                Options +FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Но я получаю ошибку 403 Forbidden, когда хочу получить доступ к index.html по адресу http://local.server.com/index.html.

403 Forbidden
You don't have permission to access /index.html on this server.

В журнале отладки httpd я проверил следующее сообщение:

[Sun Feb 13 19:34:47 2011] [error] [client 127.0.1.1] Symbolic link not allowed or link target not accessible: /opt/share/www/mydevelopmentrootpath

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

В параметрах ядра httpd есть директива:

SymLinksIfOwnerMatch
The server will only follow symbolic links for which the target file or directory is owned by the same user id as the link.

Но я проверил его без эффектов.

Кто-нибудь может мне помочь? Я думаю, что это банальная конфигурация среды разработки.

С уважением,

И прошлое

apache требует права на выполнение для всех родительских каталогов /home/myusername/myworkspace/hptargetpath/src/pages чтобы перейти по символической ссылке. вы можете предоставить это право с

chmod o+x /home
chmod o+x /home/myusername
chmod o+x /home/myusername/myworkspace
chmod o+x /home/myusername/myworkspace/hptargetpath
chmod o+x /home/myusername/myworkspace/hptargetpath/src
chmod o+x /home/myusername/myworkspace/hptargetpath/src/pages

в большинстве случаев это помогает.

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

chown -h <user>.<group> <symlink>

apache распознает право собственности на символическую ссылку и выдает ошибки, если право собственности на символическую ссылку не подходит. в error_log вы можете прочитать только «Символическая ссылка не разрешена или цель ссылки недоступна». Не забывайте опцию -h, иначе вы измените целевого владельца.