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

Как заставить Apache следовать символическим ссылкам на другой каталог, не изменяя каждый родительский каталог целевого каталога на o + x?

Например, у меня та же проблема, что и в этом вопросе: 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»).