【发布时间】:2015-05-05 15:31:47
【问题描述】:
我必须编写一个 ping 函数才能在 Linux 上运行。语言是 C++,所以 C 也可以。
在网上搜索并查看ping命令的源代码,原来我应该创建一个原始套接字:
icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
如果我以超级用户身份运行我的应用程序,socket 函数将返回 -1,即未成功创建套接字。如果我以超级用户身份运行它,一切正常。
现在,ping 命令会创建一个原始套接字,我可以在没有超级用户权限的情况下运行它。
我的问题是:如何在不被超级用户执行的情况下授予我的应用程序创建原始套接字所需的所有权限?
【问题讨论】: