Apache 为每个用户提供自己的 cgi-bin 目录
pache具有 public_html 目录支持。通过此功能,如果收到 ~user 请求,您可以指定附加到用户主目录的目录名称。例如,https://domain[.]com/~rocky/file.html 将是 rocky 的主目录 /home/rocky/public_html/file.html。最近我找了一份兼职工作,设置了一个大学网络服务器。我想让每个学生都可以访问 cgi-bin,这样他们就可以使用 Perl 作为 CGI 脚本。我不想让每个人都访问 /var/www/cgi-bin 或 /usr/lib/cgi-bin/ 目录。ScriptAliases 允许将 cgi-bin 目录中的文档视为应用程序并在服务器请求时运行,而不是将其视为发送到客户端的文档。所以首先,我设置了 ScriptAlias。但是,它不起作用。
所以所有学生都可以看到彼此的 Perl 源代码 ???? 所以我再次被叫来解决这个问题。经过一番搜索,我从 Apache 官方文档中找到了解决方案。因此我修改了 httpd.conf,并在 /home/*/public_html/cgi-bin 部分添加了以下两个指令:
Apache 为每个用户提供自己的 cgi-bin 目录
语法是:
Options ExecCGI SetHandler cgi-script
最后的最终条目如下所示:
<Directory /home/*/public_html/cgi-bin> Options ExecCGI SetHandler cgi-script </Directory>
然后我重新启动了 Apache Web 服务器,它运行起来非常顺畅。有关更多信息,请参阅 Apache文档中有关使用 CGI 的动态内容的内容。正如Randal指出的那样,您只需添加以上四行即可。
在 Apache HTTPD 服务器中启用公共用户目录和 cgi-bin 目录
Apache mod_userdir 允许用户特定的公共目录。例如:
https://www.example.com/~vivek/index
https://www.example.com/~vivek/cgi-bin/test.pl
启用公共用户特定目录
语法如下(在 httpd.conf 服务器配置或您的虚拟主机配置中添加):
UserDir enabled
禁用公共用户特定目录
尝试:
UserDir disabled
为所有用户启用用户目录,但为少数用户禁用
让我们启用公共用户目录和 cgi-bin 目录,但对 root、marlena、emilia、raj、govind 和 carl 用户禁用它:
UserDir enabled UserDir disabled root marlena emilia raj govind carl
当然,您需要创建具有主目录的用户帐户。有关详细信息,请参阅以下教程:
- 如何在 Ubuntu Linux 上创建用户账户
- 如何在 CentOS 7/8/9 中创建新的用户帐户
- Linux 创建用户账户
- Linux 使用命令行将用户添加到组
- Linux 使用命令行工具添加用户
- UNIX 创建用户帐户
- 如何使用 adduser 或 pw 在 FreeBSD 上添加用户
在此示例中,对所有用户禁用此功能,但允许 vivek 和 simran 用户使用公共和 cgi-bin 用户目录。例如:
UserDir disabled UserDir enabled vivek simran
下面是我在 RHLS 上运行的 Apache Web 服务器中为每个用户提供 CGI bin 目录的方法:
<Directory /home/*/public_hrml/cgi-bin/> Options ExecCGI SetHandler cgi-script </Directory>
在 Apache HTTP Web 服务器中启用公共和 CGI-BIN 用户目录(单击以启用)
总结
AddHandler首先,必须使用或Apache 指令激活 cgi 脚本处理程序SetHandler。其次,ExecCGI必须在 Options 指令中指定。就这些。使用grep 命令或egrep 命令在 httpd.conf 或虚拟主机配置文件中搜索这些指令。例如:
$ grep -E -i 'AddHandler|SetHandler|ExecCGI' apache.conf
此外,确保用户有足够的可用磁盘空间来托管他们的脚本和用 Perl 编写的代码。请随意使用 du 命令或df 命令/ duf 命令,如下所示:
有一次我们的磁盘空间不足。所以我编写了一个脚本来监视 Solaris Unix 或 Linux Server 磁盘空间并通过电子邮件向我发送警报。
$ du -chs /home/user/
$ df -h
- 我如何找到我的 cgi-bin 的 URL?
- Apache 为每个用户提供自己的 cgi-bin 目录
- Lighttpd 设置 CGI-BIG CGI 用于 Perl 程序
- Linux Apache 设置 Perl CGI 脚本限制
- 如何在 Ubuntu 22.04 / 20.04 上为 Nginx 安装 fcgiwrap
- FreeBSD 使用 mod_fastcgi 模块配置 Apache PHP
- 我的 cgi-bin 目录中的脚本不起作用,我该如何解决这个问题?
- 禁止 - 您无权访问此页面错误及解决方案
- 运行 Perl 脚本时出现 HTTP 500 错误
- Red Hat / CentOS Apache 2 FastCGI PHP 配置
- FreeBSD:安装 bindgraph 以制作有关发送到 BIND 的查询的图表