APACHE : Directives pour les scripts CGI

Bonjour,

Je souhaiterais avoir des précisions sur la partie CGI de mon fichier de configuration /etc/apache2/sites-available/default dont voici son contenu :

[code] <VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www

Options FollowSymLinks
AllowOverride None

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

    #---------- PHP ------------------------------------------------------------#
    # le /www est un alias vers /usr/bin. Donc, les pages php du /www lanceront
    # l'exécutable php-cgi qui se trouve dans /usr/bin. 
    ScriptAlias /www /usr/bin
    AddHandler application/x-httpd-php5 php
    Action application/x-httpd-php5 /www/php-cgi
  

    #---------------------------------------------------------------------------#
    #---------- CGI ------------------------------------------------------------#
    #---------------------------------------------------------------------------#
    # Où doivent exclusivement s'exécuter les scripts CGI, ici dans le /var/www/cgi
    # L'url est http://server.tld/cgi/
    ScriptAlias /cgi /var/www/cgi

    # Avec ou sans le <Directory> ci dessous ca fonctionne quand même....
    <Directory "/var/www/cgi">
            AllowOverride none
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            allow from all
    </Directory>
    #---------------------------------------------------------------------------#
    #---------------------------------------------------------------------------#
    #---------------------------------------------------------------------------#


    #---------- Personnification des logs d'erreur -----------------------------#
    ErrorLog ${APACHE_LOG_DIR}/error-defaultSite.log
    # Possible values include: debug, info, notice, warn, error, crit,
    LogLevel warn
    #---------- Personnification des logs d'accès ------------------------------#
    CustomLog ${APACHE_LOG_DIR}/access-defaultSite.log combined

[/code]

Je ne comprend pas l’intérêt de la directive Options +ExecCGI qui pourtant d’après la doc d’Apache permet d’exécuter les scripts dans le répertoire voulu :

<Directory "/var/www/cgi"> AllowOverride none Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch <--------------------- ?? Order allow,deny allow from all </Directory>
Si je la supprime, les scripts cgi s’exécutent quand même dans /var/www/cgi.

Si je change le répertoire cgi/ en JOHN/ :

<Directory "/var/www/JOHN"> AllowOverride none Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch <--------------------- ?? Order allow,deny allow from all </Directory>
aucun script ne s’exécutera à l’intérieur de celui-ci (alors qu’ils le devrait ? Options +ExecCGI est fait exprès pour ça ?)

C’est comme si la directive ScriptAlias /cgi /var/www/cgi au dessus était la seule qui comptait vraiment.
Je ne vois donc pas l’utilité de Options +ExecCGI.

Une dernière question : J’ai 2 fois la directive ScriptAlias dans mon fichier default, est-ce “propre” point de vue configuration ?

Un autre dernière question : j’ai remarqué que mon dossier cgi/ est en forbidden accès par défaut, pas de listing donc, c’est une sécurité d’Apache qui se met en place dès qu’on utilise la directive ScriptAlias ? (ici ScriptAlias /cgi /var/www/cgi).

Merci beaucoup !

Regarde ce que fait la directive ScriptAlias
httpd.apache.org/docs/2.2/mod/m … criptalias

La doc officielle
httpd.apache.org/docs/2.2/howto/cgi.html

Par contre attention ta config Apache ne me parait pas très “secure”. Pense à ce qui peut arriver si un utilisateur peut déposer un cgi dans ton arborescence web.

Merci beaucoup, j’ai pu éclaircir le problème.

J’ai opté, selon la doc, pour un :

Ce qui donne :

        #---------- PHP ------------------------------------------------------------#
        # le /www est un alias vers /usr/bin. Donc, les pages php du /www lanceront
        # l'exécutable php-cgi qui se trouve dans /usr/bin. 
        ScriptAlias /www /usr/bin
        AddHandler application/x-httpd-php5 php
        Action application/x-httpd-php5 /www/php-cgi

        #---------------------------------------------------------------------------#
        #---------- CGI ------------------------------------------------------------#
        #---------------------------------------------------------------------------#
        <Directory /var/www/cgi >
                AddHandler cgi-script .cgi .pl
                Options ExecCGI
        </Directory>

J’ai vérifié et il n’y a que dans le répertoire /var/www/cgi que s’exécute les .cgi et .pl (dans un autre endroit ça affiche juste le code).
Php s’exécute partout dans /var/www

J’ai quand même des doutes, c’est pourquoi je préfère poser la question : Niveau sécurité ça parait correct ?

Merci

Inutile, tu peux enlever.

La config du module php est déjà dans le fichier [mono]/etc/apache2/mods-enabled/php5.conf[/mono]

J’ai enlevé ces directives pour tester. Quand elles sont absentes les pages php ne sont plus interprétées.

Sur mon serveur j’ai seulement installé php5-cgi et activé le module actions. Mais comme ça ne marchait pas j’ai dû écrire ces lignes dans la config pour que php soit interprété. Pas de soucis au niveau des scripts cgi avec ou sans ces lignes.

Je suis allé voir le fichier /etc/apache2/mods-available/actions.conf il y avait ces commentaires :

[code]# a2enmod-note: needs-configuration

Action lets you define media types that will execute a script whenever

a matching file is called. This eliminates the need for repeated URL

pathnames for oft-used CGI file processors.

Format: Action media/type /cgi-script/location

Format: Action handler-name /cgi-script/location

[/code]
et j’ai juste déplacé cette ligne dedans :

#-- Pour faire fonctionner PHP -------------# Action application/x-httpd-php5 /www/php-cgi
Et ça fonctionne tout aussi bien.

Mais je ne sait pas si c’est comme ça qu’il faut faire ? :think:

Je ne connais pas php5-cgi, mais si tu as une bonne raison de l’utiliser…

Si ce n’est pas le cas :

[mono]apt-cache show php5-cgi[/mono]

[quote]Veuillez noter que la majorité des
utilisateurs d’Apache devraient plutôt utiliser le paquet
libapache2-mod-php5.[/quote]

Merci, j’en prend note.