CGI mit Shell-Skript

CGI mit Shell-Skript

Ich habe Probleme, ein CGI-Beispiel mit Shell-Skript auszuführen. Ich kann nicht auf das Verzeichnis zugreifen, das im Beispiel erstellt wurde, das ich befolge: "/tmp/shell". Durch Zugriff auf die Adresse "http://localhost/shell" sollte eine Seite „Index of shel“ sehen, gibt aber einen 403-Fehler mit der Meldung „Sie haben keine Berechtigung, auf diesem Server auf /shell/ zuzugreifen.“ aus.

Ich verwende Fedora 24 und ich glaube, der Apache-Benutzer heißt „Apache“. Zumindest gibt es einen Apache-Benutzer in der Datei „passwd“. Der Ordner, in dem ich CGI-Dateien ausführen wollte, hat die Berechtigung 777 und ich habe den Benutzer mit Chown in „Apache“ geändert, erhalte aber dennoch einen 403-Fehler.

Meine Datei "/etc/httpd/conf/httpd.conf" sieht folgendermaßen aus:

$ Tail -n20 /etc/httpd/conf/httpd.conf

# Settings for the study of Shell Script and CGI

Alias ​​/shell "/tmp/shell/"

<Directory "/tmp/shell/">
    Options Indexes FollowSymlinks ExecCGI
    AllowOverride None
    Order allow, deny
    Allow from all
</ Directory>

Meine /tmp/shell:

$ ls -ld /tmp/ /tmp/shell
drwxrwxrwt. 15 root   root   480 Out  1 13:53 /tmp/
drwxrwxr-x.  2 apache apache  40 Out  1 13:52 /tmp/shell

Apache läuft normalerweise beihttp://localhost, ich verstehe nicht, warum ich nicht auf /tmp/shell zugreifen kann. Ich werde hier verrückt!

Kann mir jemand helfen?

Antwort1

Fedora 24 verwendet systemd und richtet wahrscheinlich ein privates /tmpnur für den httpd-Prozess ein. Sie können dies mit überprüfen

sudo systemctl show -p PrivateTmp httpd

Sie können dies überschreiben, indem Sie eine Datei erstellen, /etc/systemd/system/httpd.servicedie Folgendes enthält:

.include /lib/systemd/system/httpd.service
[Service]
PrivateTmp=false

und tun Sie dies sudo systemctl daemon-reload, bevor Sie den Dienst neu starten.

verwandte Informationen