unix 下,发送原始数据报的权限问题

gogovista 2008-08-01 02:56:47
需求:要在程序中实现 ping 的功能,判断远程主机通不通。
有两个办法:
1、 sys 系统调用,使用 unix 自带的ping工具,分析重定向的结果,判断远程主机通不通
缺点:各种 os 自带的 ping 返回值差别大,变化多,不利于维护

2、自己在程序里写一个 ping 函数
麻烦来了:创建原始套接字(socket_row),需要 root 权限,但不可能为了这个程序,让机器在 root 下裸奔。

俺于是想了个办法:在创建套接字之前,把权限改为 root ,创建成功之后在改为普通用户。

只是这个想法可行吗?可行的话,该怎么行?
...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐田伯光 2008-08-02
  • 打赏
  • 举报
回复
setuid(),咋不去看看呢?
gogovista 2008-08-02
  • 打赏
  • 举报
回复
怎么能把root中的
cap_socket_raw 权限赋给一个 普通 user?
gogovista 2008-08-02
  • 打赏
  • 举报
回复
额,关键是现在我没有root权限
blackbillow 2008-08-01
  • 打赏
  • 举报
回复
看ping的源码
KimenWu 2008-08-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 guosha 的回复:]
setuid
[/Quote]
这是一个不错的方式,apache好像就是这样干的
快乐田伯光 2008-08-01
  • 打赏
  • 举报
回复
setuid

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧