日期:2014-05-16  浏览次数:20610 次

用c写cgi程序,不能在cgi程序中执行shell命令???
我用c写的cgi程序,想再cgi程序中用system执行一个shell命令,在后台直接运行可以执行,但是从网页点击按钮来触发这个cgi程序,发现system不能执行shell命令,这是为什么?请各位大侠指点
------解决方案--------------------
用shell语言写吧。。
------解决方案--------------------
引用:
引用:
从网页上访问执行的人的权限属于nobody
如果nobody用户没有执行权限的话 当然是执行不了。


我的bon.conf:
User root
Group root
并不是nobody

你最好再去了解一下这块。
按你的意思 我在apache的httpd.conf里改成
User root
Group root
那所有访问该网站的人都具有了root权限?你试试就知道了 事实上不是那样!
按我知道的 这样指定用户 一般都是以该用户来启动或者调度该程序
和你从外界访问不是一回事
------解决方案--------------------
我估计这样是可以的 比如在系统里username用户可以执行your-cgi
#chown username.username your-cgi
#chmod a+x your-cgi
#chmod u+s your-cgi
------解决方案--------------------
原因主席已经讲过了。我就给你个解决方法吧:
把所有要执行的system()写到库函数中。然后让cgi程序调用这个库函数就可以了。
注意库函数文件需要有相应的权限。
例如:
把函数

void ls(char *path) {
  char cmd[1024];
  sprintf(cmd,"ls %s",path);
  system(cmd);
}

编译成libmysystem.so文件。在CGI程序中这样使用:

int main(int argc,char **argv) {
  printf("Content-type:text/html\n\n"); 
  printf("<html>");
  printf("<body>");
  ls("/usr");
  printf("</body>");
  printf("</html>");
}

然后编译:
gcc cgi.c -o cgi -lmysystem