Apache: Come Visualizzare un Elenco di Directory

Per visualizzare un elenco di file e sottodirectory in una directory sul server HTTP Apache, impostare Options +Indexes in quella directory. L'elenco viene generato quando vengono concessi i permessi di accesso, non esiste un file indice predefinito e mod_autoindex è attivato.

Condizioni in cui l'elenco viene visualizzato

Quando viene richiesta un URL di directory in Apache 2.4, esso cerca prima i file specificati in DirectoryIndex. Ad esempio, se index.html esiste, quel file viene solitamente visualizzato. Se il file non esiste e Indexes è attivato, mod_autoindex può creare l'elenco. Per un comportamento dettagliato, vedere la descrizione di DirectoryIndex di Apache e la documentazione mod_autoindex.

Le impostazioni di elenchi non concedono permessi di accesso. Le directory a cui è negato l'accesso o percorsi che Apache non può leggere non visualizzeranno un elenco. Inoltre, può verificarsi un 403 Forbidden per vari motivi, come l'autenticazione o i permessi del file system, quindi non si dovrebbe abilitare l'elenco solo perché appare un 403.

Controllare prima di impostare

  • Prepara una directory dedicata dove elenchi e file possano essere resi pubblici. Non mettere materiali che non dovrebbero essere pubblici, come file di configurazione, backup o informazioni personali.
  • Conferma il virtual host del sito da configurare e il percorso reale dei file. L'esempio sottostante è per Ubuntu Apache 2.4 quando la root dei documenti del sito è /var/www/html e la directory pubblica è downloads al suo interno. Sostituisci con il percorso reale dell'ambiente e l'URL.
  • Effettua il backup delle impostazioni esistenti e verifica di avere il permesso di gestire il sito e ricaricare Apache. Se si tratta di un server di produzione, verifica prima in un ambiente di test.

Anche se i file non appaiono nell'elenco, potrebbero essere accessibili se si conosce direttamente l'URL del file. Nascondere i nomi nell'elenco non sostituisce i permessi che bloccano l'accesso ai file.

Applicare a una directory specifica nell'host virtuale

Su Ubuntu, la configurazione del sito attivo si trova di solito in un file sotto /etc/apache2/sites-available/. Aggiungere il seguente blocco alla configurazione dell'host virtuale del sito o modificare la configurazione del percorso esistente. Non aggiungere incautamente permessi pubblici a directory che hanno già restrizioni di accesso.

<Directory "/var/www/html/downloads">
    Options +Indexes
    Require all granted
</Directory>

Options +Indexes abilita l’elenco del contenuto della directory tra le opzioni ereditate. Require all granted consente l'accesso a questo percorso, quindi utilizzalo solo nelle directory destinate ad essere pubbliche. L'effettiva portata di applicazione può variare a seconda di altre sezioni di configurazione o impostazioni di sottodirectory. Puoi controllare le regole di ereditarietà e fusione delle opzioni nella direttiva Apache Options.

Dopo aver salvato la configurazione, verifica la sintassi su Ubuntu. Se Syntax OK viene visualizzato, ricarica la configurazione. Se si verificano errori, correggi il percorso e gli errori di battitura e non ricaricare finché il controllo non ha esito positivo.

sudo apache2ctl configtest
sudo systemctl reload apache2

Le distribuzioni diverse da Ubuntu possono avere posizioni dei file di configurazione e nomi dei servizi differenti. Inoltre, segui le indicazioni di quella distribuzione per i comandi di verifica della sintassi e di ricarica.

Verifica delle liste delle directory e dell'ambito di accesso

  1. Posiziona un file di prova che possa essere accessibile pubblicamente nella directory di destinazione e assicurati che il file indice specificato non sia presente.
  2. Apri l'URL della directory nel tuo browser. Nell'esempio sopra, se l'indirizzo del server è https://example.com, https://example.com/downloads/ sarebbe l'URL di esempio. Sostituiscilo con il dominio reale.
  3. Verifica se i file di prova sono visualizzati nell'elenco e apri i link per assicurarti che l'ambito di accesso corrisponda all'impostazione prevista. Poiché le impostazioni possono essere ereditate dalle sottodirectory, verifica anche l'ambito di accesso pubblico.

Se appare una pagina invece di un elenco, controlla se esiste un file DirectoryIndex o altri gestori/reindirizzamenti. Se è un errore 403, verifica le restrizioni di accesso, i permessi della directory e le impostazioni dell'indice nei log degli errori. Puoi anche controllare se il modulo autoindex è attivo usando apache2ctl -M. Se il percorso è errato, potrebbe verificarsi un errore 404.

Quando si utilizza .htaccess

Se l'amministratore del server ha consentito modifiche a Options in .htaccess per la directory, puoi anche aggiungere la seguente riga a quel file. Se il AllowOverride delle impostazioni principali non permette questa opzione, potrebbe non funzionare o causare un errore del server, quindi conferma con l'amministratore.

Options +Indexes

Se hai accesso alle impostazioni del server, Apache generalmente consiglia di utilizzare il file di configurazione principale. Controlla le condizioni applicabili nella guida .htaccess di Apache.

Per smettere di visualizzare l'elenco

Imposta Options -Indexes nel percorso indicato o ripristina le impostazioni precedenti alle tue modifiche, quindi controlla la sintassi e ricarica Apache. Se l'hai aggiunto a .htaccess, rimuovi quella riga oppure, se consentito, modificala in Options -Indexes. Poiché possono esistere impostazioni ereditate, controlla di nuovo l'URL della directory dopo aver effettuato le modifiche.

Semplicemente disattivare l'elenco non blocca l'accesso agli URL dei file già noti. Per proteggere i file stessi, applica controlli di accesso separati e verifica che gli utenti non autorizzati siano effettivamente bloccati.