back to top

Agire sulle risorse: direttive di Apache

Alla base del funzionamento di Apache abbiamo le direttive, note anche come container. I container raggruppano risorse e informazioni con direttive di configurazione comuni; in pratica, i file e le cartelle di uno stesso gruppo rispondono alle medesime regole. Per isolare un gruppo dagli altri e rendere valide soltanto per esso determinate direttive basterà utilizzare una sintassi simile a quella HTML:

<Directory /PATH/file o cartella>
istruzione
istruzione
.............
</Directory>
Abbiamo visto un esempio di container nel capitolo precedente:
<Directory "PATH_per_la_ROOT">
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Come si avrà modo di osservare, le direttive vengono imposte attraverso semplici parole inglesi come Allow (permetti) o deny (nega).

All’interno di httpd.conf, troveremo sovente alcune indicazioni che costituiscono la sintassi base delle direttive.

Innanzitutto osserviamo i “tags” minore “<” e “maggiore” “>” con i quali viene delimitata la directory per cui le direttive avranno valore. Per ogni directory viene indicato il relativo percorso e le direttive influiranno sia sulla cartella principale che sul suo contenuto in termini di file e sotto cartelle. Grazie all’uso delle “espressioni regolari”, è possibile indicare le cosiddette DirectoryMatch in modo da imporre determinate direttive soltanto ad alcune cartelle, come ad esempio quelle che cominciano con una determinata lettera dell’alfabeto.

Oltre a <Directory..></Directory> e DirectoryMatch, avremo la possibilità di impostare direttive anche attraverso Files e FilesMatch, magari utilizzando il comodo carattere jolly “*” (tutto); se per esempio scriviamo:

Files *.ext
la nostra direttiva avrà valore per tutti (*) i file dotati di una determinata estensione indipendentemente dal loro nome.

Location e LocationMatch funzionano similmente alle istruzioni precedenti, ma non si riferiscono a dei percorsi interni al server, bensì a delle URL specifiche. In httpd.conf troviamo per esempio questa direttiva:

<pre><Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from NOME_DOMINIO
</Location>
Che autorizza la ricezione dei “reports” del server all’indirizzo “http://servername/server-status”.

Abbiamo poi VirtualHost utilizzato per le istruzioni relative alla gestione dei “domini virtuali” con più siti internet di cui parleremo a breve; per ora basti sapere che tramite VirtualHost è possibile settare diverse DocumentRoot, indirizzi di posta elettronica dell’Administrator, percorsi verso i file di “log” e molto altro.

Infine, è possibile utilizzare le istruzioni Limit e LimitExcept per differenziare i criteri di accesso a file e cartelle; se Limit stà appunto per “poni un limite a”, LimitExcept svolge una funzione più specifica, significa infatti “poni un limite a tutti i metodi di accesso tranne che a quello indicato”. Raramente queste due istruzioni sono espresse da sole e più frequentemente sono parte integrante di una direttiva principale. Prendendo spunto da httpd.conf, proponiamo un esempio che riguarda il controllo degli accessi alle directory dello User:

<Directory "PATH">
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,denyAllow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.