Come posso accedere agli script CGI non memorizzati sotto WWW-Root?


0

Come posso accedere agli script cgi dal browser se la directory CGI-Executables è sopra la cartella www-root? Non voglio usare qualcosa piace ../. Ho provato a navigare su localhost / cgi-bin / ma ha dato un errore. Ha detto il permesso negato.

Come configuro queste impostazioni? Inoltre, gli alias di directory / ~ nome utente possono eseguire script-cgi?

Risposte:


3

Se date un'occhiata al principale file di configurazione di Apache2, /etc/apache2/httpd.conf vedrai che ci sono due cose da fare per consentire a / Library / WebServer / CGI-Executables di contenere i file cgi.

Innanzitutto, poiché non è coperto dalle autorizzazioni per la directory del documento adiacente, sarà necessario un blocco "Directory" per definire le autorizzazioni per tutti i file e le directory sottostanti. Nel caso di questa directory non consente assolutamente nulla. Questo è il motivo per cui quando hai puntato il tuo browser nella directory ha detto che le autorizzazioni sono state negate. Non preoccuparti, la seconda cosa consente i file cgi nel la directory da eseguire.

In secondo luogo, ha bisogno di un comando "ScriptAlias" che indica al server quale URL verrà utilizzato per puntarlo in modo che il server trovi i file e consenta loro di essere eseguiti.

ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) \
"/Library/WebServer/CGI-Executables/$1"

Questo in pratica dice "dopo aver rimosso il nome host, qualsiasi URL che inizia" / cgi-bin / "e continua con una parte di testo seguita da un punto seguito da un'altra parte di testo punta a un file con un nome corrispondente all'ultimo bit in la directory "" / Libreria / WebServer / CGI-Executables / $ 1 "

Se si desidera posizionare i file CGI in una delle directory utente, sarà necessario apportare alcune modifiche a un altro file di configurazione. Troverete il file di configurazione per le condivisioni utente in / etc / apache2 / users con un file di configurazione per ciascun utente. Ecco un esempio:

<Directory "/Users/jessica/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

A questo dovrai aggiungere "ExecCGI" alla riga "Opzioni" in modo da poter avere file CGI ovunque nella directory di Sites o sotto o aggiungere un nuovo blocco Directory per la tua cartella CGI. Sarebbe come questo: -

<Directory "/Users/jessica/Sites/CGI">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Poiché questo è sotto il nostro DocumentRoot non abbiamo bisogno di usare ScriptAliasMatch.

(La seconda opzione è la più sicura.)


1

Di solito odio farlo, ma con alcuni esperimenti ho capito come risolvere il problema.

  1. Aggiungi uno script alla cartella CGI-Executables / e imposta il suo permesso a 755 (chmod 755 ./file-name.

  2. Se si desidera modificare questa configurazione, $ cd / etc / apache2 / e modificare il file httpd.conf. Sono stato in grado di confermare che questa è la posizione corretta che gestisce l'impostazione, con questo snippit dal file.

ScriptAliasMatch ^ / cgi-bin / ((?! (? I: webobjects)). * $)   "/ Library / WebServer / CGI-eseguibili / $ 1"

Non sono sicuro di cosa faccia esattamente, ma posso essere abbastanza sicuro dai personaggi che crea il cgi-bin come un alias per CGI-Executables. Quindi, per modificare questa come cartella, è sufficiente modificare questa impostazione qui in una posizione diversa.

Non sono ancora sicuro di configurare un cgi-bin per una directory ~ / user-name se qualcuno può esserne d'aiuto


Per un servizio web veramente sicuro, cambia il proprietario dei tuoi file cgi _www e modificare le autorizzazioni su 700. (Quindi anche l'intero albero dei documenti dovrebbe essere posseduto lo stesso ed avere i permessi di 600.)
Tony Williams
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.