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


17

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

/media/sf_Dev/

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

Quando olho /varcom ls -lvejo

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

e quando ls -l /media/eu vejo

drwxrwx---  1 root vboxsf ... sf_Dev

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

Também tentei editar os envvars para tornar o grupo vboxsf, mas acho que fiz essa parte errado.

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 sirva arquivos desse diretório? (tecnicamente, eu quero servir arquivos para o apache, /media/sf_Dev/apache/wwwmas acho que um passo de cada vez, por isso, se isso ajudar você a causar um curto-circuito nas coisas, que assim seja)

Respostas:


22

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 acontece quando eu quero acessar pastas compartilhadas montadas automaticamente. Você também pode adicionar seu próprio nome de usuário ao grupo vboxsf para acessar os arquivos.


Mas o aplicativo apache está sendo executado com o nome de usuário apache? Eu pensei que isso mudou>.>
jcolebrand 16/09

Você está correto, eu misturei o usuário apache para o fedora e o ubuntu. editado :)
Fuu

1
Economizei muito tempo brincando com montagem manual .. obrigado!
xorinzor

Esta solução corrigiu para mim no Ubuntu 15. Muito obrigado!
Ian Lewis #

3

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

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

sudo chmod 775 /media/sf_Dev/

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

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


1
Ahhh, mas quando faço isso , não faz as alterações necessárias. Alguma coisa sobre o vboxfs não permite que essas alterações sejam feitas (ou seja, como NFTS) ... oooh, que pode ser o problema, os arquivos são originalmente hospedados no NTFS (já que é um host do Windows), então acho que não. pode fazer isso. ~~ Eu tinha esquecido de olhar para o log de erros antes de perguntar. Vou verificar isso esta noite. No entanto, suponha que seja um erro de permissão.
precisa saber é o seguinte

@jcolebrand Regra nº 1 da solução de problemas: está conectado? Não importa que eu esteja pensando na utilidade da resposta a longo prazo e que conheço você como um cara de DB e .NET. : P
George Marian

@jcolebrand Então, pergunta boba: você reiniciou o apache? sudo apache2ctl restart
George Marian

hahahahaha, é por isso que eu preciso de ajuda, eu sou um cara do db e do .net;) ... sim, eu entrei sudo suassim que começou a ser uma rapariga para que eu pudesse entrar em todos os diretórios e ver o que estava "quebrado" ... Vou fazer o que Josh sugeriu mais tarde com o arquivo PHP.
precisa saber é o seguinte

1
É possível que o vboxsf não suporte a configuração de permissões para a pasta raiz do sistema de arquivos e forneça opções de modo, montagem uid e gid para definir permissões de arquivo globalmente.
billc.cn

2

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

e o Apache parece não ver o index.html que eu coloquei nesse diretório

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

Sem o erro real, presumo que George Marian está correto e é um erro de permissão. Você pode verificar para qual grupo o Apache está executando usando:

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

Tente obter permissões /media/sf_Dev/como ele disse.

Eu acho que é melhor lidar com isso com uma diretiva Alias, pois isso permitirá que você faça apenas certas partes do seu DocumentRoot apontar para locais fora:

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

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

<?php

var_dump(posix_getegid());

Verifique se retorna o mesmo GID que vboxsf. (Você pode encontrar o GID do vboxsf em /etc/groups)


Eu tinha esquecido de olhar para o log de erros antes de perguntar. Vou verificar isso esta noite. No entanto, suponha que seja um erro de permissão. Veja minha resposta a George acima
jcolebrand

ESTÁ BEM. Então, devemos nos concentrar em fazer com que o Apache seja executado como GID vboxsf. Você pode editar e publicar as partes relevantes em que alterou Group?
Josh

Eu editei uma linha em envvars, e dizia group, mas não estou olhando a caixa no momento.
precisa saber é o seguinte

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, precisará adicionar a entrada respectiva dentro do seu / etc / fstab. (Parece que há algum problema ao montar a pasta compartilhada do vbox através do fstab. Então, adicionar o comando abaixo mencionado dentro do /etc/rc.local funcionou para mim para montá-lo no início).

Carregar pasta compartilhada com usuário / grupo correto

Tanto quanto eu posso dizer, esse erro é devido ao proprietário e ao grupo da pasta compartilhada. O Apache espera que os arquivos renderizados pertençam ao grupo www-data. Por padrão, no entanto, a pasta compartilhada no VirtualBox pertence ao usuário vboxsf. 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 no Debian, os dois IDs geralmente são definidos com o valor 33. Portanto, basta emitir o seguinte comando no convidado:

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

Observe que site é o nome da pasta compartilhada (conforme ilustrado na captura de tela acima) e / media / sf_website é onde a pasta será montada.

Para mais detalhes, consulte este link http://jimmybonney.com/articles/configure_virtualbox_shared_folder_apache_virtual_host/

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.