シェルスクリプトを使用した CGI

シェルスクリプトを使用した CGI

シェルスクリプトでCGIサンプルを実行するのに問題があります。私が従っているサンプルで作成されたディレクトリ「/tmp/shell」にアクセスできません。アドレス「http://localhost/シェル「Index of shel」というページが表示されますが、「このサーバーの/shell/にアクセスする権限がありません。」というメッセージとともに 403 エラーが表示されます。

私は Fedora 24 を使用していますが、Apache ユーザーは「Apache」と呼ばれていると思います。少なくとも「passwd」ファイルには Apache ユーザーが存在します。CGI ファイルを実行したいフォルダーの権限は 777 で、chown を使用してユーザーを「apache」に変更しましたが、それでも 403 エラーが発生します。

私のファイル「/etc/httpd/conf/httpd.conf」は次のようになります:

$ 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>

私の /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は正常に動作しますhttp://ローカルホスト、/tmp/shell にアクセスできない理由がわかりません。気が狂いそうです!

誰か助けてくれませんか?

答え1

Fedora 24はsystemdを使用しており、/tmphttpdプロセス専用のプライベートを設定している可能性があります。これを確認するには、

sudo systemctl show -p PrivateTmp httpd

/etc/systemd/system/httpd.serviceこれを上書きするには、以下の内容を含むファイルを作成します。

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

sudo systemctl daemon-reloadサービスを再起動する前に実行してください。

関連情報