我在网上找了一个ping的原程序,在sco unix 下编译成功。但是为什么只能在root下才能创建icmp的套接字呢?有什么办法可以让common user可以执行这个程序呢?
if( (sockfd=socket(AF_INET,SOCK_RAW,protocol->p_proto) )<0)
{ perror("socket error");
exit(1);
}
SOCK_RAW为什么只能在root下创建呢?如何解决这个问题,不然就只有root才能运行我的那个程序了。。
---------------------------------------------------------------
在执行特权操作前调用:
if(setuid(0)<0) abort();
完成之后:
if(setuid(getuid())<0) abort();
编译后:
#su
password:
#chown root:root a.out
#chmod +s a.out
#exit
ls -l a.out
看到属性为:
-rwsr-sr-x
一定有s