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
/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
서비스를 다시 시작하기 전에 수행합니다 .