У меня есть совершенно новая установка CentOS 6, которая содержит символическую ссылку в корне документа на мои файлы разработки:
[root@localhost html]# ls -l
total 4
-rwxrwxrwx. 1 root root 0 Sep 18 20:16 index.html
-rwxrwxrwx. 1 root root 17 Sep 18 20:16 index.php
lrwxrwxrwx. 1 root root 24 Sep 18 20:19 refresh-app -> /home/billy/refresh-app/
Мой httpd.conf имеет это:
<Directory "/">
Options All
AllowOverride None
Order allow,deny
Allow from all
</directory>
Цель символической ссылки имеет разрешения, которые должны позволить apache читать все, что он хочет:
[root@localhost billy]# ls -l
total 40 (Some entries were omitted because the list was too long
drwxr-xr-x. 7 billy billy 4096 Sep 18 20:03 refresh-app
Я также попытался отключить SELinux, изменив /etc/selinux/conf
:
SELINUX=disabled
Тем не менее, независимо от того, что я делаю, когда кто-то пытается перейти по этой ссылке http://localhost/refresh-app/
, я получаю страницу ошибки 403 FORBIDDEN, и это написано в /var/log/httpd/error_log
:
Symbolic link not allowed or link target not accessible
Почему Apache не может получить доступ к цели символической ссылки?
centos
permissions
apache-httpd
Билли ОНил
источник
источник
Ответы:
Нашел проблему. Оказывается, Apache хочет получить доступ к не только каталогу , я служащая,
/home/billy/refresh-app/
, но и каждый каталог выше , что, в частности/home/billy/
,/home
и/
. (Я понятия не имею, почему ... предоставление кому-либо доступа к подкаталогу не должно требовать передачи разрешений на все, что находится над этим подкаталогом ....)Я предполагаю, что он ищет
.htaccess
или что-то в этом роде, или, возможно, * nix странно относится к тому, как он обрабатывает разрешения для трансформации каталога.источник
/
... почти всегда). Системы с ACL обычно имеют отдельную опцию поперечного каталога. Можно подумать, что через 30 лет после разработки Unix и широкой доступности систем ACL списки ACL станут стандартом. : sigh:У меня была похожая проблема, когда у меня была следующая конфигурация, которая раньше работала с Ubuntu 10, но перестала работать с Ubuntu 14 (Apache 2.4):
Переход к этому разрешил проблему (хотя пользователь веб-сервера не смог получить прямой доступ к символической ссылке)
Из того, что я могу сказать, это просто
-SymLinksIfOwnerMatch
настройка и имеет какое-то отношение к изменениям в Apache 2.4, но я не пытался исследовать точную причину.Я также думал, что это может быть связано с
openbase_dir
ограничениями в PHP, но это не так.источник
Эта ошибка также может быть вызвана, если вы ссылаетесь на зашифрованную папку.
источник
Похоже, что «FollowSymLinks» - это опция, которая вам нужна в httpd.conf. Это подробно здесь . Похоже, что вам может понадобиться правило и в htdocs ... но вам нужен этот вариант.
источник
Options All
-FollowSymLinks
уже указано.Вы также можете проверить, применяется ли selinux или нет. На RedHat / Fedora выполните это:
Если ответ «Принудительный», вы можете выполнить
и попробуйте еще раз URL в вашем браузере.
Обратите внимание, что я не говорю, что отключение selinux - лучший способ решить эту проблему, но это может помочь определить причину.
источник
Создание файла .htaccess с этим помогло мне (поместите его в каталог перед символической ссылкой).
источник
/var/www
символическую ссылку на другую промежуточную символическую ссылку. Если вы должны использовать символические ссылки, сделайте это символической ссылкой ПРЯМО к месту назначения.то, что решает мою проблему после того, как разрешить все разрешения и разрешить followsymlink "В случае FollowSymLinks, в частности, он ДОЛЖЕН быть внутри структуры Справочника, когда находится внутри файла .conf. Из текущего руководства Apache
ответ отсюда
источник
Моим решением было создать общую папку для всех именованных репозиториев
/home/repo
.Тогда символическая ссылка из моего собственного дома, как:
ln -s /home/repo ~/Code
так~/Code/www.xxxx.com/public
указывает на/home/repo/www.xxxx.com/public
а также ссылка на веб-корень Apache
/var/www/html
указывает на/home/repo/www.xxxx.com/public
Нашел его здесь: https://github.com/alghanmi/ubuntu-desktop_setup/wiki/Git-Local-Repository-Setup-Guide
С некоторыми символическими ссылками + группа пользователей acrobacy вы можете развернуть несколько пользователей / версий.
источник
@Billey ONeil @Flion Я не мог ответить в строке (низкое количество повторений)
Вот что мне нужно было сделать:
( примечание: alias ll = 'ls $ LS_OPTIONS -lh')
Теперь посмотрите на каждый каталог в исходной ссылке
Каталог / home / DATA является виновником.
Исправьте это с помощью этого:
Исправление немедленно - нет необходимости перезапускать Apache.
источник
Вы также можете изменить настройки SELinux, и setenforce может не оказаться на вашем пути. Так что попробуйте это:
и чтобы это сохранялось между перезагрузками
источник