Apache non può accedere alle cartelle nella mia home directory


29

Ho modificato la configurazione di Apache per puntare verso una cartella nella mia home directory:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /home/dbugger/html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/dbugger/html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Ho persino dato il mio /home/dbugger/htmlpermesso 777. Continuo comunque a ricevere lo stesso messaggio di errore su http://localhost: "403 proibito"

Cosa mi manca?


Che dire del /home/dbuggerpermesso?
Eric Carvalho,

Vuoi dire che dovrei rendere 777 la mia intera cartella home? Sembra esagerare. Anche rendere 777 l'html non è una soluzione sicura. Lo sto solo facendo per cercare di identificare la radice del problema.
Tenda Enrique Moreno,

1
apache funziona come www-data dell'utente. Se l'utente non dispone dell'autorizzazione di esecuzione a casa tua, Apache non sarà in grado di leggere alcun file.
Eric Carvalho,

Non esiste un modo per aggiungere una sottocartella della mia directory home ai dati www senza averla per consentire l'accesso completo alla cartella home? Seguendo questa logica sembra che dovrei dare accesso anche a TUTTE LE cartelle HOME, dato che dovrei dargli accesso a / home. Sembra troppo
Enrique Moreno Tenda

Risposte:


25

Questo ha funzionato per me

<Directory />
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

L'importante era cambiare

Order allow, deny

a

Require all granted 

mi risparmi tempo, non devo cambiare il permesso
khaled_webdev,

Ciao, sono contento che ti abbia aiutato
szydan,

3
Mi sono preso la libertà di cercare ciò che era "richiedere tutto concesso" e ho scoperto che si tratta del "nuovo equivalente" di Allow from allda Apache 2.4 in poi - serverfault.com/questions/549517/…
Programster

8
no, garantire l'accesso a tutta la radice non è mai una buona idea!
bjunix,

9
L'impostazione AllowOverrideper Allil vostro principale directory è spericolato al meglio! Vedi httpd.apache.org/docs/2.4/mod/core.html#allowoverride per i dettagli.
Bombe,

19

Abilita userdirmodulo:

sudo a2enmod userdir 

Abilita l'esecuzione di PHP nella directory utente:

sudo nano /etc/apache2/mods-available/php5.conf  

(O se si utilizza php7.0, ad esempio)

sudo nano /etc/apache2/mods-available/php7.0.conf

Commenta questa parte (posizionata #all'inizio di ogni riga):

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Premi Ctrl+ Xper salvare

Abilita elenco directory:

sudo nano /etc/apache2/apache2.conf

Aggiungi questo:

<Directory /home/*/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Premi Ctrl+ Xper salvare


Riavvia apache ( sudorichiesto anche qui):

sudo service apache2 restart

Ora metti i tuoi file php nella /home/yourname/public_htmldirectory e vai
http://localhost/~yournamedal tuo browser web.


11

Apache funziona come utente www-data. Se non dispone dell'autorizzazione di esecuzione a casa tua, Apache non sarà in grado di leggere alcun file.

Cambia il gruppo della tua casa in www-data:

chgrp www-data /home/dbugger

E concedi l'autorizzazione solo per attraversare la tua home directory:

chmod g+x /home/dbugger

Puoi anche limitare le autorizzazioni di /home/dbugger/html:

chgrp www-data /home/dbugger/html
chmod 750 /home/dbugger/html

Posso farlo, ma invece di /home/dbuggerusare /home/dbugger/html?
Tenda Enrique Moreno,

Puoi anche applicare tale autorizzazione /home/dbugger/htmlinvece di 777, ma devi tenere presente che se i dati www dell'utente non possono cda casa tua, non sarà in grado di accedere a nessun file o sottocartella. Quindi, se il permesso di casa è rwx------ dbugger:dbuggerapache non sarà in grado di accedere a nessun file all'interno della tua casa. Se non vuoi limitare un po 'l'accesso potresti provare a dare solo il permesso di esecuzione ( chmod g+x /home/dbugger), non ne sono sicuro, ma penso che funzioni.
Eric Carvalho,

Siamo spiacenti ma nessuna di queste soluzioni ha funzionato :(
Enrique Moreno Tenda

chgrp www-data /home/dbuggerin combinazione con il metodo @DavidGreene ha funzionato per me
laurent

È anche possibile aggiungere il proprio gruppo di utenti all'utente apache (www-data) sudo usermod -a -G dbugger www-data, dopodiché è necessario riavviare apache.
TIIUNDER,

1

Non è necessario modificare le autorizzazioni se si desidera utilizzare la directory home per ospitare l'ambiente di sviluppo, almeno per disporre di autorizzazioni di scrittura per alcune applicazioni. Hai bisogno del modulo apache mod_userdir e puoi accedere a / home / user_name / public_html / * come questo http: //domain.local/~user_name/dir_name/ * per usare un host virtuale, per usare il modulo mod_userdir devi creare un sym link in questo modo:

$ sudo ln -s /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled/
$ sudo ln -s /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled/
$ sudo service apache2 restart

5
Puoi anche usarea2enmod userdir
Joril,
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.