Например, у меня та же проблема, что и в этом вопросе: https://stackoverflow.com/questions/7381371/apache-wont-follow-symlinks-403-forbidden
Мой DocumentRoot находится по адресу /srv/http/default/htdocs
и я пытаюсь сделать символическую ссылку на /home/trusktr/htdocs
.
Чтобы заставить его работать, мне пришлось chmod o+x
каждый каталог до /home/trusktr/htdocs
, так например:
chmod o+x /home
chmod o+x /home/trusktr
chmod o+x /home/trusktr/htdocs
а затем он начал работать точно так же, как в вопросе, который я упомянул выше.
у меня есть Options Indexes FollowSymLinks
набор для /srv/http/default/htdocs
.
Как заставить работать символические ссылки (softlinks) без необходимости chmod
любые папки в o+x
?
Подумайте, как apache - везде, где указывает ссылка, пользовательский apache (или, возможно, назначенный для виртуального хоста, если вы используете FastCGI) должен иметь доступ к файловой системе в этом месте назначения. Вы можете "исправить" это несколькими способами:
1) как вы описали, каталоги chmodding
2) вы добавляете пользователя в ту же группу, что и apache, и делаете группу каталогов читаемой
3) вместо chmodding его для apache вы можете сделать противоположное направление - связать его для пользователя и поместить физически в дерево htdocs apache (или добавить пользователя apache в какую-либо группу, к которой принадлежит пользователь, и сделать его группу каталогов доступной для чтения)
4) вы можете использовать команду «mount -bind» для монтирования места назначения в какой-либо каталог, видимый apache. Есть способ использовать suexec для динамического выполнения, однако, если это конкретный случай и один каталог, вы можете просто смонтировать его вручную, я думаю (возможно, при необходимости поместите mount -bind в fstab)
В любом случае, как сказал Аркаша, это проблема с разрешениями, в основном решаемая путем манипулирования правом собственности группы / правом чтения группы.
О, и когда вам нужно ПРОВЕРИТЬ, работает ли он, я имею в виду, что если apache видит то, что должен видеть, вы можете убедиться, что это происходит с помощью sudo-ing для пользователя apache (из корневого сеанса, например "su -s / bin / bash www-data ") - и, будучи пользователем apache, попробуйте просто" cd "перейти в этот каталог. Так что, если этот пользователь сможет перейти в конкретный каталог, веб-сервер, который работает как «он», тоже сможет.
6) Теоретически вы также можете настроить apache для запуска от имени того же пользователя, к которому вам нужен доступ к каталогу (вместо www-data или около того), но это, вероятно, будет худшей идеей из всех :)
Это, очевидно, зависит от владельца (группы) папок.
Вам нужно только установить глобальное выполнение для папок, если процесс apache не имеет доступа к папкам. Если вы хотите запретить предоставление глобальных прав выполнения, переназначьте папки группе, в которой выполняется процесс apache, и предоставьте права выполнения этой группе («g + w»).