【发布时间】:2012-12-09 06:27:53
【问题描述】:
对于我的任务,我有一个 cgi 脚本(C 程序)和一个我想使用 system() 从脚本中调用的程序。在 cgi-bin/ 和 chmodded 到 755。我知道我在我的 cgi 程序中进行的系统调用是有效的(路径正确,命令正确......)但调用总是失败。我在执行 cgi-script 期间检查了工作目录,它是正确的。如果我在 bash 中运行相同的调用,它可以工作,但在我的菜单程序中它不起作用。
这很奇怪,因为当我在我的计算机上运行服务器时系统调用正在工作(使用 python -m CGIHTTPServer),但是当我将网站放在我大学的服务器上时,除了系统()调用。所以看起来它与权限有关。
这是有问题的电话,如果有帮助的话:
sprintf(systemCall, "passweb -add %s", username);
exitStatus = system(systemCall); //always 1
【问题讨论】:
-
查看
systemCall的定义会有所帮助,但我觉得您可能需要改为使用systemCall = sprintf(systemCall, "passweb -add %s", username);。 -
作为旁注:这可能是一个明显的安全风险。 IE。如果我写了
$(rm -r .)之类的用户名,这将删除当前目录中的所有内容(或者我插入一个更糟糕的脚本)。这可能是您大学的计算机不允许这样做的原因。 -
@BradMace
char systemCall[150] = {0}; -
@YetAnotherGeek 这确实有道理,但它是分配规范的一部分..