SuidPerl的替换

| |
[不指定 2006/04/12 23:34 | by ipaddr ]
默认情况下,用PERL写的CGI,是不可以调用某些系统管理命令的,比如iptables,近日开发一网关,要求Perl调用iptables实现网络配置,本来打算用SuidPerl实现Perl调用iptables的,但发现那网关系统上没有SuidPerl,而且不带编译器,无法编辑同版本的Suidperl。

最后想一办法,用C写程序,把C程序设成suid程序,把ipables命令做为这个C程序的参数调用,成功的解决了这一问题。

C程序大概如下:

#include <string.h>

...(ipaddr,admin.net(at)163.com)

int main(int argv,char * argc[])

{

.....

return (system(argc[1]));

}

gcc syscommand.c
chmod a+x syscommand
chmod a+s syscommand
chown root.root syscommand
mv syscommand /sbin/

Perl里面这样调用iptables:

system("/sbin/syscommand 'iptables -L'");

以上思路经测试成功,一直漂原创,转载请注明。

Program | 评论(0) | 引用(0) | 阅读(4338)