带有 Shell 脚本的 CGI

带有 Shell 脚本的 CGI

我在使用 Shell 脚本运行 CGI 示例时遇到问题,无法访问在“/tmp/shell”之后的示例中创建的目录。通过访问地址“http://localhost/shell”应该会看到“Index of shel”页面,但会出现 403 错误,并显示消息“您无权访问此服务器上的/shell/。”

我使用的是Fedora 24,我认为apache用户名为“Apache”,好吧,至少在文件“passwd”中有一个apache用户,我想运行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://本地主机,我不明白为什么我无法访问/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在重新启动服务之前执行此操作。

相关内容