쉘 스크립트를 사용한 CGI

쉘 스크립트를 사용한 CGI

Shell Script를 사용하여 CGI 예제를 실행하는 데 문제가 있습니다. "/tmp/shell"을 따르는 예제에서 생성된 디렉터리에 액세스할 수 없습니다. "주소에 접속하여http://localhost/셸"를 입력하면 "Shel의 색인" 페이지가 표시되지만 "이 서버에서/shell/에 액세스할 수 있는 권한이 없습니다."라는 메시지와 함께 403 오류가 발생합니다.

저는 Fedora 24를 사용하고 있는데 아파치 사용자가 'Apache'라고 하는 것 같아요. 적어도 "passwd" 파일에 아파치 사용자가 있고, 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://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서비스를 다시 시작하기 전에 수행합니다 .

관련 정보