Como eu defino o DocumentRoot do Apache2 para uma pasta compartilhada do VirtualBox “vboxsf”? (problema de permissões?)

16

Eu configurei o desktop Ubuntu 11.04 32 bits em uma VM VirtualBox com uma pasta compartilhada para o host. A pasta compartilhada é

/media/sf_Dev/

Eu quero alterar o Apache2 para apontar o DocumentRoot para essa pasta, então editei /etc/apache2/sites-available/default para substituir os dois caminhos existentes nesse arquivo para / media / sf_Dev / em vez de / var / www e não mostrará index.html.

Quando olho para /var com ls -l , vejo

drwxr-xr-x  2 root root ... www

e quando eu ls -l /media/ vejo

drwxrwx---  1 root vboxsf ... sf_Dev

e o Apache não parece ver o index.html que eu coloquei nesse diretório ( cp /var/www/index.html /media/sf_Dev/ iirc)

Eu também tentei editar envevars para fazer o grupo ser vboxsf, mas acho que fiz a parte errada.

export APACHE_RUN_GROUP=www-data

para

export APACHE_RUN_GROUP=vboxsf

O que estou fazendo de errado? O que preciso fazer para que o Apache2 forneça arquivos desse diretório? (tecnicamente eu quero servir arquivos para o apache de /media/sf_Dev/apache/www , mas eu acho um passo de cada vez, então se isso ajuda você a curtir as coisas, que seja)

    
por jcolebrand 14.09.2011 / 06:46

4 respostas

19

Provavelmente seria mais fácil adicionar o grupo vboxsf como um grupo suplementar para o apache.

Ubuntu:

sudo usermod -a -G vboxsf www-data

Fedora:

sudo usermod -a -G vboxsf apache

Isso faz isso para mim quando quero acessar pastas compartilhadas montadas automaticamente. Você também pode querer adicionar seu próprio nome de usuário ao grupo vboxsf para acessar os arquivos.

    
por 16.09.2011 / 23:26
3

Parece um problema de permissões. Você precisará de permissão de leitura e execução em /media/sf_Dev/ para "outro" (o terceiro grupo de bits de permissão, que atualmente não são permissões ou --- ).

Então, você precisará executar este comando (já que é o Ubuntu, observe o sudo):

sudo chmod 775 /media/sf_Dev/

Isso adicionará leitura e execução para "outro" e deixará permissões completas para o proprietário e o grupo.

Verifique também se o arquivo de índice realmente existe em / media / sf_Dev /. (Eu suponho que você esqueceu o sudo no comando cp e que você não está rodando como root).

    
por 14.09.2011 / 07:48
2

Você não disse qual foi o erro específico, apenas

and Apache doesn't seem to see the index.html I put in that directory

O erro específico ajudaria. Você pode arquivar isso no error_log do Apache, que normalmente está em /var/log/apache2/error.log sob Ubunt, mas pode ser configurado através de um ErrorLog Directive no seu <VirtualHost>

Sem o erro real, presumo que George Marian esteja correto e seja um erro de permissão. Você pode verificar em qual grupo o Apache está sendo executado:

ps -o pid,group -o atime,comm=CMD awx | grep apache

Tente colocar permissões em /media/sf_Dev/ como ele disse.

Acho melhor você lidar com isso com uma diretiva de alias , pois isso permitirá que você para fazer com que apenas certas partes do seu DocumentRoot apontem para locais fora:

Alias /info /media/sf_Dev
<Directory /media/sf_Dev >
  Order allow,deny
  Allow from all
</Directory>

EDITAR: Se o servidor Apache tiver mod_php (não FastCGI PHP) e não estiver usando suexec , você poderá determinar se o Apache está sendo executado sob o GID (ID do grupo) adequado com o seguindo o snippit do PHP:

<?php

var_dump(posix_getegid());

Certifique-se de que retorne o mesmo GID que vboxsf . (Você pode encontrar o GID para o vboxsf em /etc/groups )

    
por 14.09.2011 / 14:25
0

Se você configurou a pasta compartilhada para ser montada automaticamente. Então você precisa primeiro desativar o mesmo e montar a pasta compartilhada manualmente. Se você precisar montá-lo automaticamente toda vez que iniciar o vm, você precisará adicionar a respectiva entrada em seu / etc / fstab. (Parece que há algum problema ao montar a pasta compartilhada vbox através do fstab. Então, adicionando o comando abaixo mencionado em /etc/rc.local, trabalhei para mim montá-lo no início).

Carregar pasta compartilhada com usuário / grupo correto

Tanto quanto eu posso dizer, este erro é devido ao proprietário e grupo da pasta compartilhada. O Apache espera que os arquivos sejam renderizados para pertencer ao grupo www-data. Por padrão, no entanto, a pasta compartilhada no VirtualBox pertence ao usuário vboxsf. Nós adicionaremos esse usuário ao grupo www-data. Para fazer isso, edite as propriedades do grupo no convidado:

sudo usermod -a -G vboxsf www-data

Agora vamos montar a pasta compartilhada e atribuí-la ao usuário e grupo www-data. Para verificar o ID do usuário e do grupo, você pode dar uma olhada no arquivo / etc / passwd na máquina convidada (cat / etc / passwd | grep 'www-data'). No sistema operacional baseado em Debian, os dois IDs são geralmente configurados para o valor 33. Então, simplesmente emita o seguinte comando no guest:

mount -t vboxsf -o rw,uid=33,gid=33 website /media/sf_website

Note que website é o nome da pasta compartilhada (como ilustrado na imagem acima) e / media / sf_website é onde a pasta será montada.

Para mais detalhes, consulte este link link

    
por 27.01.2017 / 14:45