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)

jcolebrand
fonte

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.

Fuu
fonte
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.)

George Marian
fonte
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)

Josh
fonte
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/

Pandurang Patil
fonte