用c写cgi程序,不能在cgi程序中执行shell命令

用c写cgi程序,不能在cgi程序中执行shell命令

我用c写的cgi程序,想再cgi程序中用system执行一个shell命令,在后台直接运行可以执行,但是从网页点击按钮来触发这个cgi程序,发现system不能执行shell命令,这是为什么

从网页上访问执行的人的权限属于nobody
如果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程序调用这个库函数就可以了。
注意库函数文件需要有相应的权限。
例如:
把函数

C/C++ code?123456 void ls(char *path) {   char cmd[1024];   sprintf(cmd,"ls %s",path);   system(cmd); }

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

C/C++ code?123456789 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

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有