Come impostare Apache2 DocumentRoot su una cartella condivisa VirtualBox "vboxsf"? (problema con le autorizzazioni?)


17

Ho installato Ubuntu 11.04 desktop a 32 bit su una VM VirtualBox con una cartella condivisa sull'host. La cartella condivisa è

/media/sf_Dev/

Voglio cambiare Apache2 per puntare DocumentRoota quella cartella, quindi ho modificato /etc/apache2/sites-available/defaultper sostituire i due percorsi esistenti in quel file in / media / sf_Dev / anziché / var / www e non mostrerà index.html.

Quando guardo /varcon ls -lvedo

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

e quando ls -l /media/vedo

drwxrwx---  1 root vboxsf ... sf_Dev

e Apache non sembra vedere index.html che ho inserito in quella directory ( cp /var/www/index.html /media/sf_Dev/iirc)

Ho anche provato a modificare envvars per rendere il gruppo vboxsf ma penso di aver sbagliato quella parte.

export APACHE_RUN_GROUP=www-data

per

export APACHE_RUN_GROUP=vboxsf

Cosa sto facendo di sbagliato, cosa devo fare per fare in modo che Apache2 serva i file da quella directory? (tecnicamente voglio servire file per apache da /media/sf_Dev/apache/wwwma immagino un passo alla volta, quindi se questo ti aiuta a cortocircuitare le cose, così sia)

Risposte:


22

Probabilmente sarebbe più semplice aggiungere il gruppo vboxsf come gruppo supplementare per apache.

Ubuntu:

sudo usermod -a -G vboxsf www-data

Fedora:

sudo usermod -a -G vboxsf apache

Questo lo fa per me quando voglio accedere alle cartelle condivise montate automaticamente. Potresti anche voler aggiungere il tuo nome utente al gruppo vboxsf per accedere ai file.


Ma l'app apache funziona con il nome utente apache? Pensavo che fosse cambiato>.>
jcolebrand il

Hai ragione, ho mescolato l'utente apache per fedora e ubuntu. a cura di :)
Fuu,

1
Mi ha risparmiato un sacco di tempo armeggiando con il montaggio manuale .. grazie!
xorinzor,

Questa soluzione l'ha risolto per me su Ubuntu 15. Mille grazie!
Ian Lewis,

3

Sembra un problema di autorizzazioni. Dovrai leggere ed eseguire l'autorizzazione /media/sf_Dev/per "altro" (il terzo gruppo di bit di autorizzazione, che al momento non sono permessi o ---).

Quindi, dovrai eseguire questo comando (poiché è Ubuntu, nota il sudo):

sudo chmod 775 /media/sf_Dev/

Ciò aggiungerà la lettura e l'esecuzione per "altro" e lascerà le autorizzazioni complete per proprietario e gruppo.

Assicurati anche che il file indice esista effettivamente in / media / sf_Dev /. (Suppongo che hai dimenticato il sudo nel comando cp e che non stai eseguendo come root.)


1
Ahhh, ma quando lo faccio , che non fa i cambiamenti di cui ho bisogno. Qualcosa sui vboxfs non consente di apportare tali modifiche (ad esempio: come NFTS) ... oooh, che potrebbe essere il problema, i file sono originariamente ospitati su NTFS (dal momento che è un host Windows), quindi non penso che posso farlo. ~~ Avevo dimenticato di guardare il log degli errori prima di chiedere. Lo controllerò stasera. Tuttavia, supponiamo che sia un errore di autorizzazione.
jcolebrand,

@jcolebrand Regola n. 1 per la risoluzione dei problemi: è collegato? Non importa che sto pensando all'utilità a lungo termine della risposta e che ti conosca come un ragazzo DB e .NET. : P
George Marian,

@jcolebrand Quindi, domanda stupida: hai riavviato Apache? sudo apache2ctl restart
George Marian,

hahahahaha, questo è il motivo per cui ho bisogno di aiuto, sono un tipo db e .net;) ... sì, in realtà mi sono imbattuto in sudo suuna volta che ha iniziato a essere una fanciulla in modo da poter andare in tutte le directory e vedere cosa era "rotto" ... Farò quello che Josh ha suggerito in seguito con il file PHP.
jcolebrand,

1
È possibile che vboxsf non supporti le autorizzazioni di impostazione per la cartella principale del file system e possa fornire opzioni di modalità, uid e gid per impostare le autorizzazioni dei file a livello globale.
billc.cn,

2

Non hai detto quale fosse l'errore specifico, solo

e Apache non sembra vedere index.html che ho inserito in quella directory

L'errore specifico sarebbe d'aiuto. Puoi archiviarlo in Apache error_log, che in genere si trova /var/log/apache2/error.logsotto Ubunt, ma può essere configurato tramite una ErrorLogdirettiva nel tuo<VirtualHost>

Senza l'errore reale, presumo che George Marian sia corretto ed è un errore di autorizzazione. Puoi verificare per quale gruppo Apache è in esecuzione utilizzando:

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

Prova a cercare permessi /media/sf_Dev/come ha detto.

Penso che potresti fare meglio a gestirlo con una direttiva Alias ​​in quanto ciò ti consentirà di fare in modo che solo alcune parti del tuo DocumentRoot rimandino a posizioni esterne:

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

EDIT: Se il server Apache ha mod_php(non FastCGI PHP) e non sta usando suexec, puoi determinare se Apache è in esecuzione con il GID (ID gruppo) corretto con il seguente frammento PHP:

<?php

var_dump(posix_getegid());

Assicurarsi che restituisca lo stesso GID di vboxsf. (Puoi trovare il GID per vboxsf in /etc/groups)


Avevo dimenticato di guardare il log degli errori prima di chiedere. Lo controllerò stasera. Tuttavia, supponiamo che sia un errore di autorizzazione. Vedi la mia risposta a George sopra
jcolebrand,

OK. Quindi dovremmo concentrarci su come far funzionare Apache come GID vboxsf. Puoi modificare e pubblicare le parti pertinenti in cui hai cambiato il Group?
Josh,

Ho modificato una riga in envvars e ha detto gruppo, ma non sto guardando la scatola in questo momento.
jcolebrand,

0

Se la cartella condivisa è stata configurata per il montaggio automatico. Quindi devi prima disabilitare lo stesso e montare manualmente la cartella condivisa. Se è necessario montarlo automaticamente ogni volta che si avvia vm, è necessario aggiungere la rispettiva voce all'interno di / etc / fstab. (Sembra che ci sia qualche problema nel montare la cartella condivisa vbox tramite fstab. Quindi l'aggiunta del comando sotto menzionato all'interno di /etc/rc.local ha funzionato per me per montarlo all'avvio).

Carica cartella condivisa con utente / gruppo corretti

Per quanto ne so, questo errore è dovuto al proprietario e al gruppo della cartella condivisa. Apache si aspetta che i file vengano renderizzati come appartenenti al gruppo www-data. Per impostazione predefinita, tuttavia, la cartella condivisa in VirtualBox appartiene all'utente vboxsf. Aggiungeremo questo utente al gruppo www-data. Per fare ciò, modifica le proprietà del gruppo sul guest:

sudo usermod -a -G vboxsf www-data

Monteremo ora la cartella condivisa e la assegneremo all'utente e al gruppo www-data. Per verificare l'id utente e il gruppo, è possibile dare un'occhiata al file / etc / passwd sulla macchina guest (cat / etc / passwd | grep 'www-data'). Nel sistema operativo basato su Debian, entrambi gli ID sono generalmente impostati sul valore 33. Quindi, è sufficiente emettere il seguente comando sul guest:

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

Si noti che il sito Web è il nome della cartella condivisa (come illustrato nella schermata sopra) e / media / sf_website è dove verrà montata la cartella.

Per maggiori dettagli fai riferimento a questo link http://jimmybonney.com/articles/configure_virtualbox_shared_folder_apache_virtual_host/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.