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

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

シェルスクリプトを使用してCGIサンプルを実行できませんでしたが、この例では "/tmp/shell"の後に作成されたディレクトリにアクセスできません。 「というアドレスに接続してhttp://localhost/シェル「「シェルのインデックス」ページを表示する必要がありますが、「このサーバーの/ shell /にアクセスする権限がありません」というメッセージが表示され、403エラーが表示されます。

私はFedora 24を使用しています。 Apacheのユーザー名は「Apache」のようです。少なくとも "passwd"ファイルにApacheユーザーがいます。 CGIファイルを実行するフォルダの権限は777で、ユーザーを変更しました。 "apache"にchownを使用しましたが、まだ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://localhost、なぜ/tmp/shellにアクセスできないのかわかりません。私はここで狂ったと思います!

誰でも私を助けることができますか?

答え1

/tmpFedora 24はsystemdを使用し、httpdプロセス用にパーソナルシステムを設定することもできます。次のコマンドを使用してこれを確認できます。

sudo systemctl show -p PrivateTmp httpd

/etc/systemd/system/httpd.service次の内容でファイルを生成してそれを上書きできます。

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

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

関連情報