Não é possível usar a pasta compartilhada do VirtualBox como raiz do documento do Apache

3

Tendo passado por várias centenas de aros, finalmente consegui que o Centos 5.8 montasse uma pasta compartilhada do VirtualBox (que não é somente leitura), que agora aparece em:

/media/sf_sites

Esta é uma pasta na minha máquina host (Mac OS X 10.8.2) contendo sites.

O diretório e suas subpastas são todos de propriedade do usuário root e do grupo vboxsf

Eu adicionei o usuário apache ao grupo vboxsf

No entanto, o link não permite que eu use minha pasta compartilhada como raiz do documento. Meu vhost está configurado como:

DocumentRoot /media/sf_sites/mysite/public

No Apache, eu recebo isto:

Starting httpd: Warning: DocumentRoot [/media/sf_sites/mysite/public] does not exist
                                                           [  OK  ]

E, sem surpresa, ao visualizar o site no meu navegador, recebo um erro 403. ("Você não tem permissão para acessar / neste servidor.")

Alguma idéia de como é possível fazer isso funcionar?

Eu quero desenvolver no meu Mac, mas uso o Linux no VirtualBox como meu servidor de desenvolvimento. Existe uma maneira alternativa de fazer isso?

    
por Adrian 04.11.2012 / 09:15

4 respostas

0

Eu nunca resolvi os problemas inesperados do "fim do arquivo", mas o Vagrant apareceu e isso faz todo o trabalho pesado para você .

    
por 22.05.2014 / 20:49
1

Crie um ponto de montagem no seu Linux, instale o sshfs se ainda não o tiver.

Faça o seguinte no CentOS

sudo su - apache
sshfs root@< your OS X IP >:< web folder path > < mount point >

Por exemplo:

  • OS X IP: 192.168.0.10
  • Caminho da pasta da Web do OS X: / Users / me / webOSX
  • ponto de montagem do CentOS: / var / www / webLinux

O comando sshfs será: sshfs [email protected]: / Users / me / webOSX / var / www / webLinux

    
por 04.11.2012 / 09:54
1

Isso porque o contexto de segurança do SELinux da pasta compartilhada não permite que o Apache o use. Como o contexto de segurança das pastas compartilhadas VBox não pode ser alterado, você pode modificar a política de segurança do SELinux para permitir que o Apache trabalhe com o contexto. É semelhante a abrir uma porta no firewall para expor uma determinada porta a um aplicativo. NÃO é uma boa ideia desligar o SELinux como outros sugeriram, pois isso deixa o servidor mais vulnerável.

Primeiro, certifique-se de que seu usuário do apache faça parte do grupo que possui a pasta compartilhada. Se não estiver, você poderá adicioná-lo com um comando semelhante a esse (os nomes de usuário / grupo podem ser diferentes em seu sistema ):

usermod -aG vboxsf apache

Em seguida, você pode usar audit2allow para gerar uma nova política de segurança para contornar seus problemas. Aqui está um bom tutorial .

Se você é preguiçoso e deseja apenas permitir acesso de leitura do Apache às suas pastas compartilhadas VBox, provavelmente é possível adaptar o seguinte arquivo de política my_httpd_t.te e usar os comandos incluídos para aplicá-lo em seu sistema.

module my_httpd_t 1.0;

require {
        type httpd_t;
        type vmblock_t;
        class dir read;
        class file { read getattr open };
}

#============= httpd_t ==============
allow httpd_t vmblock_t:dir read;
allow httpd_t vmblock_t:file { getattr open read };

# Generated by audit2allow

# To apply this policy:
## checkmodule -M -m -o my_httpd_t.mod my_httpd_t.te
## semodule_package -o my_httpd_t.pp -m my_httpd_t.mod
## semodule -i my_httpd_t.pp
## systemctl restart httpd
    
por 27.07.2017 / 01:45
-1

Você precisa desativar o SELinux se precisar definir uma pasta compartilhada como DocumentRoot do seu servidor Apache.

Acesse /etc/selinux/config e atualize-o para ler:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted

Em seguida, reinicie sua máquina virtual. Isso funciona com vagabundo também.

    
por 21.08.2016 / 15:32