Autor Tópico: Symlink ou link simbólico não exibe arquivo  (Lida 19621 vezes)

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Symlink ou link simbólico não exibe arquivo
« Online: 15 de Fevereiro de 2017, 16:45 »
Instalei um hd slave num servidor que recebeu automaticamente o nome de (vou encurtar para facilitar):
Código: [Selecionar]
/media/myuser/89e802
Veio default com user myuser e grupo root. Já alterei com
Código: [Selecionar]
chown -Rc myuser:myuser 89e802
Tem permissões
Código: [Selecionar]
drwxr-xr-x
Dentro dele tem uma pasta produtos, que ficou como
Código: [Selecionar]
/media/myuser/89e802/produtos
No diretorio raiz do Apache, criei o link:
Código: [Selecionar]
myuser@myuser:/media/myuser$ ln -s /media/myuser/89e802/produtos
No hd principal do servidor LAMP, ficou:
Código: [Selecionar]
/var/www/html/produtos
Pelo Nautilus navego normalmente e consigo exibir o arquivo:
Código: [Selecionar]
/var/www/html/produtos/foto.png
Problema:
Numa página html não abre o:
Código: [Selecionar]
<img src="produtos/foto.png">
Já tentei achar o erro pelas permissões, pelo proprietário e pela sintaxe do html e do link, mas não localizei o erro.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #1 Online: 15 de Fevereiro de 2017, 16:53 »
Olá maurov, faltou dizer qual o sistema de arquivos em que esse HD foi formatado. Se for NTFS ou VFAT, por exemplo, há opções essenciais que precisam ser configuradas pra que o acesso funcione a contento.
Já sistemas de arquivos nativos podem exigir outros cuidados.

Em particular, eu verificaria:

1. Que o usuário do apache (se não me engano é "www-data") tem acesso de execução em todos os diretórios do caminho, tanto no caminho real, quanto no link simbólico. O acesso de execução, num diretório, define se um usuário pode recuperar entradas nesse diretório ("Directory Traversal").

2. Que o AppArmor ou o SELinux, se estiverem instalados, estejam configurados pra permitir que o Apache (/usr/bin/httpd) acesse suas pastas.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #2 Online: 15 de Fevereiro de 2017, 17:11 »
Olá
Creio que seja www-data
Código: [Selecionar]
ps aux | grep -i apache
root      1199  0.0  0.8 325504 28620 ?        Ss   13:59   0:00 /usr/sbin/apache2 -k start
www-data  1341  0.0  0.4 326132 15224 ?        S    13:59   0:00 /usr/sbin/apache2 -k start
www-data  1342  0.0  0.4 326132 15312 ?        S    13:59   0:00 /usr/sbin/apache2 -k start
www-data  1343  0.0  0.4 326132 15300 ?        S    13:59   0:00 /usr/sbin/apache2 -k start
www-data  1344  0.0  0.4 326132 15380 ?        S    13:59   0:00 /usr/sbin/apache2 -k start
www-data  1345  0.0  0.4 326132 15220 ?        S    13:59   0:00 /usr/sbin/apache2 -k start
www-data  1866  0.0  0.4 326132 15312 ?        S    14:18   0:00 /usr/sbin/apache2 -k start
www-data  1867  0.0  0.4 326124 15316 ?        S    14:19   0:00 /usr/sbin/apache2 -k start
myuser     6703  0.0  0.0  21312   940 pts/4    S+   17:08   0:00 grep --color=auto -i apache

Creio não ter AppArmor ou o SELinux, a não ser que se instalem automaticamente junto com outro programa. Mas a instalação desta máquina é nova.

Obs:
Só agora descobri que o ps aux signfica Process  Status, All, User's process, X not attached to terminal. :)

Outra coisa:
Copiei esta estrutura de outro servidor que está mostrando as imagens normalmente.
« Última modificação: 15 de Fevereiro de 2017, 17:16 por maurov »

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #3 Online: 15 de Fevereiro de 2017, 17:21 »
E o sistema de arquivos, qual é?

EDIT: E a versão do Ubuntu em uso, qual é, também?
« Última modificação: 15 de Fevereiro de 2017, 17:24 por zekkerj »
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #4 Online: 15 de Fevereiro de 2017, 17:35 »
Ubuntu 16.04.1
Disco do sitema com ext4(?)
Disco slave com GPT


Código: [Selecionar]
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial

Código: [Selecionar]
fdisk -l

Disk /dev/sda: 74,5 GiB, 80026361856 bytes, 156301488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x83879a46

Dispositivo Inicializar     Start       Fim   Setores  Size Id Tipo
/dev/sda1   *                2048 149503999 149501952 71,3G 83 Linux
/dev/sda2               149506046 156301311   6795266  3,2G  5 Estendida
/dev/sda5               149506048 156301311   6795264  3,2G 82 Linux swap / Solaris
e
Código: [Selecionar]
Disk /dev/sdb: 149,1 GiB, 160040803840 bytes, 312579695 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: E54F18E1-C467-4C8D-8AFE-94A25DE12E8D


« Última modificação: 15 de Fevereiro de 2017, 17:41 por maurov »

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #5 Online: 15 de Fevereiro de 2017, 17:51 »
GPT é a tabela de partições. O comando [sudo] "blkid" pode mostrar o tipo de sistema de arquivos de cada partição de cada disco.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #6 Online: 15 de Fevereiro de 2017, 18:11 »
sda1 ext4
sda5 swap
sdb ext4

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #7 Online: 15 de Fevereiro de 2017, 23:30 »
Ubuntu server ou desktop?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #8 Online: 16 de Fevereiro de 2017, 08:33 »
Desktop
Desde o início uso o desktop devido às facilidades gráficas e depois instalo o LAMP

Fiz um teste. Criei uma pasta real chamada produtos1 dentro de /var/www/html e coloquei ali o foto.png. Alterei o caminho no script, e abriu normalmente. Isso me leva a analisar o link novamente.

Outro teste
foto.png estava com permissão 644. Mudei chmod 777 mas também não exibiu.
« Última modificação: 16 de Fevereiro de 2017, 11:37 por maurov »

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #9 Online: 16 de Fevereiro de 2017, 11:38 »
Outro teste:
Coloquei um link para ele mesmo e recebi a mensagem:

Forbidden
You don't have permission to access /produtos/foto.png on this server.

É algo com a permissão mesmo.
« Última modificação: 16 de Fevereiro de 2017, 11:42 por maurov »

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #10 Online: 16 de Fevereiro de 2017, 14:30 »
Certo. AppArmor e SELinux instalados por padrão, no Ubuntu 16.04 Desktop.

Você precisa verificar no perfil do apache2 (/usr/bin/httpd) para o AppArmor, se está liberado o acesso a partir do caminho desse arquivo.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #11 Online: 16 de Fevereiro de 2017, 14:43 »
em /usr/bin não tem httpd...

Sobre o SELinux:
Código: [Selecionar]
sestatus
O programa 'sestatus' não está instalado no momento. Você pode instalá-lo digitando:
sudo apt install policycoreutils

Sobre o AppArmor
Código: [Selecionar]
sudo apparmor_status
apparmor module is loaded.
22 profiles are loaded.
22 profiles are in enforce mode.
   /sbin/dhclient
   /usr/bin/evince
   /usr/bin/evince-previewer
   /usr/bin/evince-previewer//sanitized_helper
   /usr/bin/evince-thumbnailer
   /usr/bin/evince-thumbnailer//sanitized_helper
   /usr/bin/evince//sanitized_helper
   /usr/bin/ubuntu-core-launcher
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/cups/backend/cups-pdf
   /usr/lib/lightdm/lightdm-guest-session
   /usr/lib/lightdm/lightdm-guest-session//chromium
   /usr/sbin/cups-browsed
   /usr/sbin/cupsd
   /usr/sbin/cupsd//third_party
   /usr/sbin/ippusbxd
   /usr/sbin/mysqld
   /usr/sbin/tcpdump
   webbrowser-app
   webbrowser-app//oxide_helper
« Última modificação: 16 de Fevereiro de 2017, 15:52 por maurov »

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #12 Online: 16 de Fevereiro de 2017, 16:20 »
Veja qual é o nome do arquivo que executa o apache; pode ser apache mesmo. Depois procure por ele no diretório de configuração do AppArmor pra verificar qual é o seu perfil de acesso.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 446
    • Ver perfil
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #13 Online: 16 de Fevereiro de 2017, 16:32 »
Chegando lá.
Achei um /usr/sbin/apache2. Creio (?) que este arquivo execute o Apache2. Tentei abri-lo com Nano, mas está em formato não compreensível.

Na pasta /etc/apparmor.d/ que parece ser onde ficam as configurações do AppArmor, Tem uma pasta chamada abstractions, onde encontrei um arquivo chamado apache2-common.

Dentro dele fiquei tentado a descomentar uma linha que diz:
# Allow apache to send us signals by default
  signal (receive) peer=/usr/sbin/apache2,

Por acaso seria isso?

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re:Symlink ou link simbólico não exibe arquivo
« Resposta #14 Online: 16 de Fevereiro de 2017, 16:44 »
Não.

Procure pelas configurações que definem os arquivos que o apache pode acessar.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D