2015-11-10 1 views
2

J'ai un script python nommé test.cgi dans/Bibliothèque/WebServer/CGI-Executables. J'ai un fichier index.html dans/Bibliothèque/WebServer/Documents. Mon fichier html contient un formulaire qui enregistre dans le script CGI et cela fonctionne très bien. Lorsque mon script tente d'écrire un fichier, je reçois l'erreur suivante:Autorisation de script Python CGI refusée lors de l'écriture de fichier

enter image description here

Peu importe ce que je précise que la sortie dir, je reçois le même message d'erreur. J'ai essayé de changer les permissions sur le dossier de cgi-bin et le manuscrit mais cela ne fonctionne pas non plus. Aucune suggestion?

Répondre

5

Sous Linux, un serveur Web s'exécute normalement en tant qu'utilisateur et groupe non privilégié. Souvent utilisateur = www-data et group = www-data, mais cela dépend de votre configuration. Le CGI hérite de cet utilisateur et de ce groupe.

Pour créer un fichier sous www-data, vous devez vous assurer que le répertoire est accessible en écriture à cet utilisateur.

Une manière courante consiste à s'assurer que le répertoire est dans le groupe www-data et accessible en écriture. Les commandes suivantes sont un exemple:

$ chgrp www-data /Users/user/Documents/pictures 
$ chmod g+rwx /Users/user/Documents/pictures 

Cela ne fonctionnera que si vous êtes vous-même dans le groupe www-data (ou root).

Vous pouvez créer des fichiers existants dans ce répertoire inscriptible:

$ chgrp www-data /Users/user/Documents/pictures/* 
$ chmod g+rw /Users/user/Documents/pictures/* 

Vous devez également vérifier que tous les répertoires ci-dessus/Utilisateurs/utilisateur/Documents/images sont accessibles à www-data. Alors chgrp/chmod eux aussi s'ils ne sont ouverts à personne.

1

Il semblerait que vous n'ayez pas les droits d'écriture à un moment donné sur /Users/user/Documents/pictures/lol.jpg - vous devez modifier les permissions en conséquence (tout en gardant à l'esprit les implications de sécurité)

+0

Je suis descendu la ligne et j'ai tout donné 0777 et ça marche maintenant, mais j'ai l'impression que ce n'est pas une très bonne solution. –

+0

D'accord, vous auriez dû vérifier à quelle couche le problème était. Si c'est un serveur web public, cela pourrait bien vous mordre un jour (en attendant, si vous pensez que cela répond à votre question, vous connaissez l'affaire;)) – aho