• Home
  • Apache e link simbolici (symbolic links aka symlinks)

Capita spesso di aver necessità di creare una directory “parallela” a quella di default per immagazzinare i siti web serviti dal nostro Apache.

L’idea che più di frequente viene in mente è quella di creare un link simbolico che colleghi la directory alla radice di default.

Questo, per non impazzire ad eseguire mount, per pigrizia, o semplicemente perchè non si userà sempre il solito percorso.

Il problema a questo punto sarà che Apache, nell’incontrare un symbolic link, restituirà istantaneamente un errore 403.


Apache, link simbolici e qualche esempio

Se prendiamo come esempio una distribuzione Ubuntu, di norma la directory pubblica che Apache si aspetta di utilizzare è la: /var/www/html/.

Il caso tipico, giusto per fare un esempio, è quello in cui si ha poco spazio a disposizione nella partizione in cui risiede quella cartella.

Ipotizzando di avere una seconda partizione (partizione2) con molto più spazio; inoltre, di voler posizionare un sito web nella sua directory demo.

La via più semplice sembrerebbe quella di creare un link simbolico di quella cartella demo dentro la html letta da apache.

Ricordo che – di default – Ubuntu e derivate montano le partizioni all’interno di media, sotto la directory dell’utente loggato.

Nell’esempio sopracitato, avremmo quindi:

cd /var/www/html

sudo ln -s /media/nomeutente/partizione2/demo/ ./demo

Con il primo comando ci si sposta nella public di Apache (html) e con il secondo creiamo al suo interno un link simbolico alla directory demo proveniente da partizione2.

Ebbene, tentando di accedere alla url del sito con http://localhost/demo (come ci si aspetterebbe funzionasse), Apache restituirà un errore 403.

Forbidden – You don’t have permission to access /demo on this server.


Come risolvere

Bisogna capire che Apache attraverserà il link simbolico e si renderà conto di non avere i permessi di esecuzione.

Sarà inutile modificare il solo file di configurazione di Apache stesso /etc/apache2/apache2.conf con l’apposita sezione Directoy.

Prima devono essere sistemati i permessi di ogni singola directory facente parte del percorso che Apache deve attraversare.

Nel nostro caso, quindi, a partire da /media/nomeutente/partizione2/demo/, è necessario eseguire:

sudo chmod o+x /media/

sudo chmod o+x /media/nomeutente/

sudo chmod o+x /media/nomeutente/partizione2/

sudo chmod o+x /media/nomeutente/partizione2/demo/

Una chiamata tramite browser a http://localhost/demo restituirà finalmente il sito web.

Ovviamente ragionare sempre su cosa si fa esattamente assegnando quei permessi: mentre in ambiente di sviluppo quanto scritto sino ad ora può essere di sicura utilità, in produzione potremmo creare falle di sicurezza. Ribadisco, ragionare bene prima.


Segui @andymnc (Andrea Manconi) su Twitter per essere sempre aggiornato su guide ed articoli


Condividi: