Come accedere agli script CGI non memorizzati in WWW-Root?

0

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

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

    
posta rubixibuc 16.02.2012 - 08:49
fonte

2 risposte

3

Se dai 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 ai file cgi in di eseguire la directory.

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 al ultimo bit nella 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 di 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 è in il nostro DocumentRoot non è necessario utilizzare ScriptAliasMatch.

(La seconda opzione è la più sicura.)

    
risposta data 26.01.2014 - 08:35
fonte
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-Executables/$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 questo come cartella, è sufficiente modificare qui questa impostazione in una posizione diversa.

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

    
risposta data 16.02.2012 - 09:13
fonte

Leggi altre domande sui tag