シェルスクリプトを使用して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
/tmp
Fedora 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
サービスを再起動する前にこれを実行してください。