it-swarm.it

Apache non seguirà i collegamenti simbolici (403 vietato)

Ho qualche problema con l'installazione di Apache su Ubuntu. Ho seguito questa guida .

# /usr/sbin/Apache2 -v
Server version: Apache/2.2.17 (Ubuntu)
Server built:   Feb 22 2011 18:33:02

La mia directory pubblica,/var/www, può servire con successo ed eseguire PHP che sono inserite in essa. Tuttavia, voglio creare un link simbolico in/var/www che punti a una directory nella mia cartella home e servire pagine lì.

[root /var/www]# ll
total 36
drwxr-xr-x  3 root root 4096 2011-09-11 14:22 .
drwxr-xr-x 14 root root 4096 2011-06-04 22:49 ..
lrwxrwxrwx  1 root root   16 2011-09-11 13:21 about -> /root/site/about

Quando provo ad accedere a/about sul browser, ottengo

Forbidden

You don't have permission to access /about on this server.

Per quanto ne so, ho dato sufficienti privilegi ai file che voglio servire:

[root ~/site/about]# ll
total 24
drwxr-xr-x 5 root root 4096 2011-09-11 13:20 .
drwxr--r-- 3 root root 4096 2011-09-11 13:19 ..
drwxr-xr-x 2 root root 4096 2011-09-11 13:21 contact
-rwxr-xr-x 1 root root 1090 2011-09-11 13:19 index.php
drwxr-xr-x 2 root root 4096 2011-09-11 13:20 me
drwxr-xr-x 2 root root 4096 2011-09-11 13:21 resume

Sono a conoscenza dell'opzione FollowSymLinks e credo che sia impostata nel mio file/etc/Apache2/sites-enabled/000-default:

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options FollowSymLinks Indexes MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

Hai idea di cosa potrei perdere?

83
Tim

Verifica che Apache disponga dei diritti di esecuzione per /root, /root/site e /root/site/about.

Correre:

chmod o+x /root /root/site /root/site/about
122
palacsint

L'errore 403 può anche essere causato da un file system crittografato, ad es. un collegamento simbolico a una cartella principale crittografata .

Se il tuo link simbolico punta alla cartella crittografata, l'utente Apache (ad es. Www-data) non può accedere ai contenuti, anche se le autorizzazioni Apache e file/cartella sono impostate correttamente. L'accesso dell'utente www-data può essere verificato con tale chiamata:

Sudo -u www-data ls -l /var/www/html/<your symlink>/

Esistono soluzioni/soluzioni a questo, ad es. aggiungendo l'utente www-data al tuo gruppo privato (espone i dati crittografati all'utente web) o impostando una cartella rsynced non crittografata (probabilmente piuttosto sicura). Io stesso proverò probabilmente una soluzione rsync durante lo sviluppo.

https://askubuntu.com/questions/633625/public-folder-in-an-encrypted-home-directory

Uno strumento utile per i miei scopi è lsyncd. Questo mi permette di lavorare direttamente nella mia cartella home crittografata e di essere in grado di vedere le modifiche quasi istantaneamente nella pagina Web di Apache. La sincronizzazione è innescata da cambiamenti nel file system, chiamando un rsync. Dato che sto lavorando solo su pagine Web e script piuttosto piccoli, la sincronizzazione è molto veloce. Ho deciso di utilizzare un breve ritardo di 1 secondo prima dell'avvio di rsync, anche se è possibile impostare un ritardo di 0 secondi.

Installazione di lsyncd (in Ubuntu):

Sudo apt-get install lsyncd

Avvio del servizio in background:

lsyncd -delay 1 -rsync /home/<me>/<work folder>/ /var/www/html/<web folder>/
17
user3811904

Avevo un problema simile che non riuscivo a risolvere da molto tempo sul mio nuovo server. Oltre alla risposta di palacsint, una buona domanda da porsi è: stai usando Apache 2.4? In Apache 2.4 esiste un meccanismo diverso per impostare le autorizzazioni che non funzionano quando fatto usando la configurazione sopra, quindi ho usato soluzione spiegata in questo post del blog .

Fondamentalmente, ciò che dovevo fare era convertire il mio file di configurazione da:

Alias /demo /usr/demo/html

<Directory "/usr/demo/html">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    allow from all

</Directory>

a:

Alias /demo /usr/demo/html

<Directory "/usr/demo/html">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Nota come le righe Order e consentono sono state sostituite da Richiedi tutto concesso

12

In relazione a questa domanda, ho appena capito perché il mio vhost mi stava dando quel 403.

Avevo provato TUTTE le possibilità su questa domanda e altre senza fortuna. Mi fa quasi impazzire.

Sto installando un server con distribuzione di rilasci simile al modo Capistrano tramite collegamenti simbolici e quando ho provato ad accedere alla cartella DocRoot (che ora è un collegamento simbolico alla cartella delle versioni correnti) mi ha dato il 403.

Il mio vhost è:

DocumentRoot /var/www/site.com/html
<Directory /var/www/site.com/html>
        AllowOverride All
        Options +FollowSymLinks
        Require all granted
</Directory>

e il mio file httpd.conf principale era (installazione predefinita di Apache 2.4):

DocumentRoot "/var/www"
<Directory "/var/www">
    Options -Indexes -FollowSymLinks -Includes
(...)

Si scopre che la definizione delle Opzioni principali stava avendo la precedenza sul mio campo di vhosts (per me è controintuitivo). Quindi l'ho cambiato in:

DocumentRoot "/var/www"
<Directory "/var/www">
    Options -Indexes +FollowSymLinks -Includes
(...)

ed Eureka! (nota il segno più prima di FollowSymLinks nel file httpd.conf MAIN. Spero che questo aiuti qualche altra anima perduta.

7
mustangp51d

Prima disabilita selinux (vim/etc/selinux/config)

vim /etc/httpd/conf/httpd.conf modifica le seguenti righe per i collegamenti simbolici e l'indicizzazione delle directory:

documentroot /var/www/html
<directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride None
</directory>

Se il file .htaccess quindi AllowOverride all

1
n s n srinivas

Per chiunque abbia problemi dopo l'aggiornamento a 14.04 https://askubuntu.com/questions/452042/why-is-my-Apache-not-working-after-upgrading-to-ubuntu-14-04 come root è cambiato prima di upgrade =/var/www dopo upgrade =/var/www/html

1
lxx