为什么只能在root里面执行呢?

xxsteven 2003-03-10 03:33:52
我在网上找了一个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才能运行我的那个程序了。。
...全文
55 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxsteven 2003-03-10
  • 打赏
  • 举报
回复
success了,马上给分了


谢谢
Nvram 2003-03-10
  • 打赏
  • 举报
回复
ls -l a.out
看到属性为:
-rwsr-sr-x
一定有s
Nvram 2003-03-10
  • 打赏
  • 举报
回复
用chmod +s a.out
Linux上o+s好象不管用
xxsteven 2003-03-10
  • 打赏
  • 举报
回复
我就是这个样子弄的的嘛。我又查不到suid程序。。。
Nvram 2003-03-10
  • 打赏
  • 举报
回复
因为你没有按照后面的步骤做。
编译后先chown然后chmod。
先看看书,别忙这试。
xxsteven 2003-03-10
  • 打赏
  • 举报
回复
怎么还是不对呢?它报错:Abort(Coredump)


是怎么一回事????????????
Nvram 2003-03-10
  • 打赏
  • 举报
回复
在需要进行特权操作前先调用:
if (setuid(0)<0) abort();
在完成特权操作后再调用:
if (setuid(getuid())<0) abort();

编译后生成a.out
% su
Password:
# chown roor:root a.out
# chmod o+s a.out
# exit
% ./a.out

仔细看书,书上有关于suid的概念。

xxsteven 2003-03-10
  • 打赏
  • 举报
回复
啥子是suid程序嘛,我杂个一点都不知道呢/??????????
xxsteven 2003-03-10
  • 打赏
  • 举报
回复
杂个做成suid程序嘛?教教我三
Nvram 2003-03-10
  • 打赏
  • 举报
回复
SOCK_RAW就是只能有root创建,解决这个问题很简单,将程序做成suid程序。
系统的ping就是suid程序。
Nvram 2003-03-10
  • 打赏
  • 举报
回复
SOCK_RAW就是只能有root创建,解决这个问题很简单,将程序做成suid程序。
系统的ping就是suid程序。
Nvram 2003-03-10
  • 打赏
  • 举报
回复
SOCK_RAW就是只能有root创建,解决这个问题很简单,将程序做成suid程序。
系统的ping就是suid程序。
xxsteven 2003-03-10
  • 打赏
  • 举报
回复
就没有人回答了哦???????????????????

23,110

社区成员

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

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