Symlink ou link simbólico não exibe arquivo

Iniciado por maurov, 15 de Fevereiro de 2017, 16:45

tópico anterior - próximo tópico

maurov

Instalei um hd slave num servidor que recebeu automaticamente o nome de (vou encurtar para facilitar):
/media/myuser/89e802

Veio default com user myuser e grupo root. Já alterei com
chown -Rc myuser:myuser 89e802

Tem permissões
drwxr-xr-x

Dentro dele tem uma pasta produtos, que ficou como
/media/myuser/89e802/produtos

No diretorio raiz do Apache, criei o link:
myuser@myuser:/media/myuser$ ln -s /media/myuser/89e802/produtos

No hd principal do servidor LAMP, ficou:
/var/www/html/produtos

Pelo Nautilus navego normalmente e consigo exibir o arquivo:
/var/www/html/produtos/foto.png

Problema:
Numa página html não abre o:
<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.

zekkerj

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

maurov

#2
Olá
Creio que seja www-data
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.

zekkerj

#3
E o sistema de arquivos, qual é?

EDIT: E a versão do Ubuntu em uso, qual é, também?
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

maurov

#4
Ubuntu 16.04.1
Disco do sitema com ext4(?)
Disco slave com GPT


lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial



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

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




zekkerj

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

maurov


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

maurov

#8
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.

maurov

#9
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.

zekkerj

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

maurov

#11
em /usr/bin não tem httpd...

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


Sobre o AppArmor
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


zekkerj

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

maurov

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?

zekkerj

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