web-dev-qa-db-fra.com

Les scripts CGI sur Apache2 donnent 403 interdits lorsque les CGI sont dans un dossier lié

J'utilise Ubuntu 16.04 en tant que machine virtuelle. J'ai Apache2 2.4.18 installé.

J'ai un dossier avec les scripts CGI que je veux utiliser. Pour ce faire, j'ai placé un lien symbolique vers ce dossier dans/usr/lib/cgi-bin.

Lorsque j'appelle le script depuis firefox localhost/cgi-bin/linkName/script.cgi je reçois une erreur 403 interdite.

Lorsque je copie le script.cgi dans /usr/lib/cgi-bin et que je l’appelle avec localhost/cgi-bin/script.cgi, il s'exécute, mais génère une erreur logicielle car il manque les fichiers et les dossiers environnants.

J'ai chmod 777 à la fois le lien et le dossier vers lequel il est lié mais je reçois toujours l'erreur.

Que puis-je faire d'autre que copier tous les fichiers et dossiers dans /usr/lib/cgi-bin?

2
Gadi Armony

C'est parce que le lien symbolique pointe vers un répertoire situé en dehors des répertoires répertoriés dans vos fichiers "virtualhost".conf. Vous devez donc écrire les directives nécessaires dans votre fichier /etc/Apache2/Apache2.conf (ou /etc/Apache2/sites-available/*.conf ou /etc/Apache2/conf-available/*.conf) pour accéder à /usr/lib/cgi-bin. Quelque chose comme:

Alias /cgi-bin/linkName /usr/lib/cgi-bin

<Directory /usr/lib/cgi-bin>
        Options +ExecCGI FollowSymLinks
        DirectoryIndex disabled
        AllowOverride None
        Require all granted
        # etc..   
</Directory>

Et peut-être (mais je ne suis pas sûr que ce soit nécessaire): Sudo chown -R www-data:www-data /usr/lib/cgi-bin.

Si vous créez Alias /cgi-bin/linkName /usr/lib/cgi-bin, vous n'avez pas besoin de créer de lien symbolique.

0
pa4080