Apache collegato alla home directory - Errori di autorizzazione


15

sto riscontrando alcuni problemi con il collegamento simbolico /var/www/a una nuova Webrootdirectory all'interno della mia cartella home. Penso che questi derivino dalla mia mancanza di comprensione dei permessi di Linux.

Per quanto ne so, i collegamenti simbolici dovrebbero assumere la forma della directory che si desidera collegare e la directory a cui si desidera essere collegati, quindi nel mio caso, ho eseguito:

sudo ln -s ~/Webroot/* /var/www/

questo è sorta di funzionato, se corro lssulla /var/www/posso vedere tutti i file nella mia Webrootdirectory.

Ogni volta che provo a eseguire un file nella mia Webrootcartella, ottengo un errore di autorizzazione 403, è perché i file nella mia directory Webroot sono stati creati da me e l'istanza di apache viene eseguita come www-data?

in tal caso, ciò significherebbe che devo modificare le autorizzazioni su ogni file che creo per eseguirlo?

In precedenza ho eseguito un'istanza di Apache locale puntando la directory root del mio vhost predefinito sulla Webrootcartella, in questo caso non ho avuto bisogno di modificare alcuna autorizzazione. Qualsiasi aiuto sarebbe apprezzato.


hai controllato per assicurarti che apache non sia configurato per non seguire i symlink .... ho avuto questo problema una volta. un thread correlato su un altro forum potrebbe essere qui: linuxforums.org/forum/servers/…
RobotHumans

Risposte:


15

Questa non è una buona pratica, sono d'accordo con Weboide. Ma esiste un modo semplice per raggiungere questo obiettivo.

1). abilita il modulo apd userdir.

sudo  a2enmod userdir

questo abiliterà il modulo apd userdir. Ora puoi inserire i contenuti del sito web ~/Webroot/o qualsiasi altra cosa nella tua home directory.

Nota: la cartella predefinita è ~/public_html

2). Apporta le modifiche necessarie a /etc/apache2/mods-enabled/userdir.conf.

3). Riavvia l'apache

sudo /etc/init.d/apache2 restart

Ora puoi accedere al sito navigando nel tuo browser all'indirizzo http: // ip-address / ~ username . Puoi anche impostare un host virtuale per questo sito.

Se stai cercando di eseguire file php devi fare un altro passo

modifica /etc/apache2/mods-enabled/php5.confe commenta le seguenti righe:

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

Quindi riavviare l'apache.

Questo è tutto. Hai fatto.

Ref: https: //wiki.ubuntu.com/UserDirectoryPHP

Spero che sia di aiuto. In caso di difficoltà, sentiti libero di pubblicarlo qui.


7

Questa non è una buona pratica per ottenere ciò che desideri.

Se stai usando PHP, potresti dare un'occhiata a suexec , suphp o php-fpm e fastcgi .


Hai ragione sul tuo problema, questo è un problema di autorizzazione nel fatto che i tuoi Webrootfile sono di proprietà di un utente diverso da www-data.

Ecco una soluzione non male per risolvere il problema. Nota che probabilmente dovrai usare sudo o login come root. Assicurati di aver compreso appieno tutti i comandi che eseguirai !!

Modifica la Webrootcartella, le sottocartelle e i file per impostare la proprietà del gruppo su www-datae impostare le autorizzazioni appropriate:

# set the group ownership to be www-data
chgrp -R www-data /path/to/home/Webroot/
# make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access)
chmod -vR g=rw /path/to/home/Webroot/
# make sure www-data can access the folders by adding the group execute bit field to directories
find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x

Modifica: Nota che dovrai certamente eseguire nuovamente quei comandi se aggiungi file / cartelle usando il tuo normale account utente.


2

Ho fatto quasi la stessa cosa con Debian Lenny, ma sono passato alla modalità non hax, ho configurato Apache correttamente. Ma con symlink:

$ ll /home
drwxr-xr-x  8 root   root   4,0K nov 14 14.59 .
drwxrwxrwx  7 root   root   4,0K nov 14 21.24 www -> /var/www

Penso che dovresti controllare il permesso di ~ e ~ / Webroot , penso che la tua dir (~) sia protetta da lettura, voglio dire, devi eseguire questo:

$ ls -la /home

Per impostare le autorizzazioni corrette, utilizzare:

# chmod 755 /home
# chmod 755 /home/<YOURNAME>
# chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot
# chmod 775 -R /home/<YOURNAME>/Webroot

Penso che dovrebbe aiutare, ma dammi maggiori informazioni a riguardo. Ti consiglio di uscire da Webroot dalla tua directory, ad es. a / home come me , perché può essere un problema di sicurezza.

"#" significa permissaggio radicale , ad es. scrivi sudo prima dei comandi; "$" indica un singolo utente


0

Devi controllare le autorizzazioni non solo sulla tua destinazione, ma anche sui suoi genitori.


Perché? È una limitazione di Apache o una limitazione del filesystem?
Flimm,

Scusa. Non ho controllato le informazioni, si basano solo su un'esperienza personale.
zVictor,

0

Ho dovuto affrontare questo problema. Ma non mi piaceva l'idea di cambiare il gruppo della mia directory home in www-data. Questo problema può essere semplicemente risolto modificando il file di configurazione per virtualHost. Basta configurare il tag Directory per includerli

<Directory "your directory here">
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

Il Require all grantedè una nuova funzionalità immagino; con un valore predefinito di denied.

Vedi questa pagina per riferimento: http://httpd.apache.org/docs/current/mod/core.html#directory

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.