Agire sulle risorse: direttive di Apache

12/05/2005

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>

© Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Stampa :: Torna alla Home