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 /tmp
nur 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.service
die 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.