apache: «Символическая ссылка не разрешена или цель ссылки недоступна» только для другой файловой системы

У меня есть файл в удаленном каталоге, который преобразован в дерево Apache DocRoot. Когда я пытаюсь загрузить файл (не писать) из этого каталога, я получаю 403: AH00037: Символическая ссылка не разрешена или цель ссылки недоступна: / var / www / b2b / web / var

Что я пробовал:

  • Selinux отключен
  • Параметры + FollowSymLinks присутствует
  • Если я заменить ссылку на другую ФС ссылкой на ту же ФС - работает!

Файл:

namei -l /var/www/b2b/web/var/assets/75259_box1_v29.jpg
f: /var/www/b2b/web/var/assets/75259_box1_v29.jpg
dr-xr-xr-x root     root     /
drwxr-xr-x root     root     var
drwxr-xr-x root     root     www
drwxrwxrwx www-data www-data b2b
drwxrwxrwx www-data www-data web
lrwxrwxrwx root     root     var -> /var/www/b2b/nfs/b2b-web-var
dr-xr-xr-x root     root       /
drwxr-xr-x root     root       var
drwxr-xr-x root     root       www
drwxrwxrwx www-data www-data   b2b
drwxrwxrwx www-data www-data   nfs
drwxrwxrwx www-data www-data   b2b-web-var
drwxrwxrwx www-data www-data assets
-rwxrwxrwx www-data www-data 75259_box1_v29.jpg

Итак, в / var / www / b2b / web / у меня есть:

lrwxrwxrwx 1 root     root       28 Oct  3 09:10 var -> /var/www/b2b/nfs/b2b-web-var

I ' мы создали var1 , который имеет то же содержимое, что и / var / www / b2b / nfs / b2b-web-var, если мне нравится ниже (ссылка локальная), тогда все работает:

lrwxrwxrwx 1 root     root        4 Oct  3 18:15 var -> var1
drwxr-xr-x 4 root     root     4096 Oct  3 18:13 var1

/ etc / fstab :

fs-1111111111:/  /var/www/b2b/nfs efs defaults,_netdev  0 0

DocumentRoot - это / var / www / b2b / web

Также я пробовал strace , но не могу понять, что именно не так:

[pid 11381] stat("/var/www/b2b/web/var/assets/75259_box1_v29.jpg",  [wait(0x857f) = 11381] WIFSTOPPED,sig=133
{st_mode=S_IFREG|0777, st_size=201249, ...}) = 0
[pid 11381] gettimeofday( [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11419] semop(2326532, {{0, -1, SEM_UNDO|IPC_NOWAIT}}, 1 <unfinished ...>
[pid 11416] semop(2326532, {{0, -1, SEM_UNDO|IPC_NOWAIT}}, 1 <unfinished ...>
[pid 11381] stat("/var/www/b2b/web/var/assets/75259_box1_v29.jpg",  [wait(0x857f) = 11419] WIFSTOPPED,sig=133
[pid 11419] <... semop resumed> )       = -1 EAGAIN (Resource temporarily unavailable)
[pid 11416] <... semop resumed> )       = -1 EAGAIN (Resource temporarily unavailable)
[pid 11381] <... stat resumed> {st_mode=S_IFREG|0777, st_size=201249, ...}) = 0
[pid 11381] lstat("/var/www/b2b/web/var",  [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] stat("/var/www/b2b/web/var",  [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] gettimeofday( [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] write(7, "[Thu Oct 03 18:34:35.430672 2019"..., 175 [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] gettimeofday( [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] read(12,  [wait(0x857f) = 11381] WIFSTOPPED,sig=133
0x555c658e7068, 8000) = -1 EAGAIN (Resource temporarily unavailable)
[pid 11381] gettimeofday( [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] writev(12, [{"HTTP/1.1 403 Forbidden\r\nDate: Th"..., 172}, {"<!DOCTYPE HTML PUBLIC \"-//IETF//"..., 357}], 2 [wait(0x857f) = 11381] WIFSTOPPED,sig=133

Я думал о тайм-аутах, но могу прочитать содержимое файла, используя su apache , затем, например, с головой /var/www/b2b/web/var/assets/75259_box1_v29.jpg | меньше . Итак, что здесь не так?

0
задан 3 October 2019 в 22:01
1 ответ

Решение: владелец символической ссылки должен быть таким же, как и остальная часть веб-сайта:

# pwd
/var/www/b2b/web
# chown -h www-data.www-data var #voila!

Примечание: -SymLinksIfOwnerMatch НЕ достаточно в моем случае, не знаю почему.

Примечание 2: не забывайте '-h', иначе chownn будет применен к цели, а не к самой ссылке. И если вы хотите указать ссылку на каталог, не добавляйте в конце косую черту!

0
ответ дан 5 December 2019 в 00:29

Теги

Похожие вопросы