Eu tenho um arquivo no diretório remoto que é moulted para apache DocRoot tree. Quando tento baixar um arquivo (não gravar) desse diretório, recebo 403:
AH00037: Symbolic link not allowed or link target not accessible: /var/www/b2b/web/var
O que eu tentei:
- Selinux está desabilitado
Options +FollowSymLinks
é presente- Se eu substituir o link para outro FS por um link no mesmo FS - funciona!
O arquivo:
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
Então, em /var/www/b2b/web/
eu tenho:
lrwxrwxrwx 1 root root 28 Oct 3 09:10 var -> /var/www/b2b/nfs/b2b-web-var
Eu criei var1
que tem o mesmo conteúdo que /var/www/b2b/nfs/b2b-web-var, se eu gostar abaixo (o link é local) então tudo funciona:
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
Também tentei strace
, mas não consigo entender o que exatamente está errado:
[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
Eu pensei em tempos limite, mas posso ler o conteúdo do arquivo usando su apache
, por exemplo, com head /var/www/b2b/web/var/assets/75259_box1_v29.jpg | less
. Então, o que há de errado aqui?
Solução: o proprietário do link simbólico deve ser o mesmo do restante do site:
Nota:
-SymLinksIfOwnerMatch
NÃO é suficiente no meu caso, não sei porquê.Nota2: não esqueça '-h', caso contrário chownn será aplicado no alvo, não no próprio link. E se você quiser chown link para o diretório, não adicione uma barra final!