쉘 스크립트를 사용한 CGI

쉘 스크립트를 사용한 CGI

쉘 스크립트를 사용하여 CGI 예제를 실행하는 데 문제가 있으며 예제에서 "/tmp/shell" 다음에 생성된 디렉토리에 액세스할 수 없습니다. "라는 주소에 접속하여http://localhost/셸""shel의 색인" 페이지가 표시되어야 하지만 "이 서버의 /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서비스를 다시 시작하기 전에 이 작업을 수행하세요 .

관련 정보