userdir
Apache의 모드를 사용하여 CGI 디렉토리를 설정했습니다. 나는 내 랩톱의 다른 사용자에게도 작동할 수 있도록 최대한 일반적인 구성을 사용합니다. 다음 URL을 사용하여 이미 스크립트를 실행할 수 있습니다.
http://localhost/~tomas/cgi-bin/hw.cgi
public_html
하지만 서버의 루트에도 링크를 넣어서 URL이 호출 /var/www/html
되면 localhost
내 디렉토리에 대한 링크가 포함된 색인을 얻습니다 localhost/tomas
. 링크가 제대로 작동하고 내 사용자 중 한 명인 다른 색인이 표시됩니다. 이제 개인 인덱스를 얻을 때 볼 수 있도록 개인 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