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

Apache не будет следовать символической ссылке без соответствующего владельца даже с отключенным SymLinkIfOwnerMatch?

Я переношу некоторые учетные записи хостинга с CentOS 6 с Apache 2.2 на CentOS 7 с Apache 2.4.34. Некоторые из этих учетных записей являются символическими ссылками на файлы через символические ссылки каталога. внутри DocumentRoot для файлов вне DocumentRoot.

Как это:

root:root /var/lib/common/html/
user:user /home/user/app/           => /var/lib/common/html/
user:user /home/user/html/file.html => /home/user/app/file.html

Работает на Apache 2.2. На Apache 2.4 я получаю ответ 403 с отказом в разрешении. Я не могу найти доказательств того, что SymLinkIfOwnerMatch установлен, только FollowSymLinks через grepping файлы конфигурации. Ошибка 403 исчезнет, ​​если я установлю /home/user/html/file.html право собственности на root:root. (Обратите внимание, что принадлежность символической ссылки каталога "посредник" не имеет значения. Apache в любом случае последует за ней.)

Есть ли ситуации, когда Apache 2.4 всегда требовать, чтобы владение символической ссылкой соответствовало? Кажется, что прямой доступ, mod_rewrite и даже псевдоним обеспечивают соответствие владения, и я не могу понять, почему.

Я понял. Панель управления, которую я использую, предоставляет выпуск Apache с дополнительными исправлениями, а также включает harden-symlinks.patch файл (источник). Патч предлагает апач UnhardenSymLinks опция доступна, но когда я попробовал, ошибки apachectl с Option UnhardenedSymLinks not allowed here. Я пробовал его внутри и вне VirtualHost, внутри каталога, но он нигде не проходит проверку конфигурации.

После небольшого исследования выяснилось, что этот патч популярен среди большинства распространенных панелей управления хостингом. Если вы его используете, вы, скорее всего, используете SymLinksIfOwnerMatch даже если вы укажете FollowSymLinks в вашем конфиге.