
Apache の modを使用して CGI ディレクトリを設定しましたuserdir
。ラップトップ上の他のユーザーにも適用できるように、できるだけ一般的な設定を使用しています。次の URL を使用してスクリプトを実行できるようになりました。
http://localhost/~tomas/cgi-bin/hw.cgi
public_html
しかし、サーバーのルート ディレクトリの にmy へのリンクも配置したので/var/www/html
、localhost
URL が呼び出されると、 にある my dir へのリンクを含むインデックスが取得されますlocalhost/tomas
。リンクは正常に動作し、別のインデックス (my ユーザーの 1 つ) が表示されます。プライベート cgi-bin は にあるので、プライベート インデックスを取得すると/home/*/public_html/cgi-bin
が表示されますcgi-bin
。このディレクトリに入ると、CGI を含む別のインデックスが取得されます。これは私にとっては問題ありませんが、これが安全であるかどうかはわかりません。しかし、そこから CGI を呼び出すと、実行されず、代わりに が表示されます。これが問題です。
私の知る限り、Apacheが表示されないということだ
http://localhost/tomas/cgi-bin/hw.cgi
として
http://localhost/~tomas/cgi-bin/hw.cgi
これを機能させるディレクティブを探していたのですが、見つかりません。ディレクティブか、それとも他に何が使えるのかさえよくわかりません。
これが私のですusermod.conf
:
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
AddHandler cgi-script .cgi
</Directory>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
答え1
ディレクトリには別のパスからアクセスできるため、代替パスのセクションを他のセクションのすぐ下にcgi-bin
コピーする方法もあります。例:Directory
<Directory /var/www/html/*/cgi-bin>
Options ExecCGI
AddHandler cgi-script .cgi
</Directory>
これにより、ディレクトリ リストも無効になります。
インデックスを有効にしたい場合は、 を追加するかIndexes
、にOptions
変更して親オプションを継承します。例:ExecCGI
+ExecCGI
<Directory /var/www/html/*/cgi-bin>
Options Indexes ExecCGI
AddHandler cgi-script .cgi
</Directory>
不要なオプションを継承しないため、Options Indexes ExecCGI
overを使用することをお勧めします。Options +ExecCGI