如何允许 perl cgi-bin 脚本执行 运行 系统命令?
How to allow perl cgi-bin script to run system commands?
我目前正在开发一个 perl 脚本作为我网站中的 cgi-bin。
我成功地将其配置为 运行,没有任何问题。这是我为它做的配置。
ScriptAlias /cgi-bin/ /my web directory/cgi-bin/
<Directory /my web directory/cgi-bin/>
Options ExecCGI
AddHandler cgi-script cgi pl
</Directory>
但是我不能在脚本中使用 system() 函数来 运行 某些系统命令。
它给出无法执行,没有这样的文件或目录
或权限被拒绝。
你应该添加什么 apache 配置以允许 cgi-bin 运行 这些命令?
谢谢!
好的,找到问题并修复。
我遵循的步骤:
apt-get install apache2-suexec-custom
a2enmod suexec
/etc/init.d/apache2 reload
然后转到网站 apache 配置并添加 SuexecUserGroup asterisk asterisk
这里星号是我没有运行命令权限的用途。
然后转到/etc/apache2/suexec/www-data
,您将看到 2 行未注释行。我们需要为 cgi-bin 提供正确的绝对路径和 cgi-bin 的别名路径。默认情况下它有 /var/www
和 public_html/cgi-bin
.
就是这样。这解决了我的问题。
我目前正在开发一个 perl 脚本作为我网站中的 cgi-bin。
我成功地将其配置为 运行,没有任何问题。这是我为它做的配置。
ScriptAlias /cgi-bin/ /my web directory/cgi-bin/
<Directory /my web directory/cgi-bin/>
Options ExecCGI
AddHandler cgi-script cgi pl
</Directory>
但是我不能在脚本中使用 system() 函数来 运行 某些系统命令。 它给出无法执行,没有这样的文件或目录 或权限被拒绝。
你应该添加什么 apache 配置以允许 cgi-bin 运行 这些命令?
谢谢!
好的,找到问题并修复。
我遵循的步骤:
apt-get install apache2-suexec-custom
a2enmod suexec
/etc/init.d/apache2 reload
然后转到网站 apache 配置并添加 SuexecUserGroup asterisk asterisk
这里星号是我没有运行命令权限的用途。
然后转到/etc/apache2/suexec/www-data
,您将看到 2 行未注释行。我们需要为 cgi-bin 提供正确的绝对路径和 cgi-bin 的别名路径。默认情况下它有 /var/www
和 public_html/cgi-bin
.
就是这样。这解决了我的问题。