当前位置: 技术问答>linux和unix
用c写cgi程序,不能在cgi程序中执行shell命令???
来源: 互联网 发布时间:2017-04-14
本文导语: 我用c写的cgi程序,想再cgi程序中用system执行一个shell命令,在后台直接运行可以执行,但是从网页点击按钮来触发这个cgi程序,发现system不能执行shell命令,这是为什么?请各位大侠指点 | 原...
我用c写的cgi程序,想再cgi程序中用system执行一个shell命令,在后台直接运行可以执行,但是从网页点击按钮来触发这个cgi程序,发现system不能执行shell命令,这是为什么?请各位大侠指点
|
原因主席已经讲过了。我就给你个解决方法吧:
把所有要执行的system()写到库函数中。然后让cgi程序调用这个库函数就可以了。
注意库函数文件需要有相应的权限。
例如:
把函数
编译成libmysystem.so文件。在CGI程序中这样使用:
然后编译:
gcc cgi.c -o cgi -lmysystem
把所有要执行的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/htmlnn");
printf("");
printf("");
ls("/usr");
printf("");
printf("");
}
然后编译:
gcc cgi.c -o cgi -lmysystem
|
用shell语言写吧。。
|
你最好再去了解一下这块。
按你的意思 我在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
#chown username.username your-cgi
#chmod a+x your-cgi
#chmod u+s your-cgi