免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8744 | 回复: 3
打印 上一主题 下一主题

为什么普通用户用不了mtr工具 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-20 15:48 |只看该作者 |倒序浏览
普通用户用mtr的时候总提示我mtr: unable to get raw sockets.  请问要修改什么地方,普通用户才能用mtr?
网上查了很久没找到,高手来帮忙啊
谢谢了

论坛徽章:
0
2 [报告]
发表于 2010-10-20 16:12 |只看该作者
自己顶一下

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2016-04-14 06:20:00数据库技术版块每日发帖之星
日期:2016-06-14 06:20:00
3 [报告]
发表于 2016-08-16 17:02 |只看该作者
mtr命令路径在 /usr/sbin/下 就是root才有权限
其它用户要用的话就给用户加上sudo权限就可以了

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
4 [报告]
发表于 2016-08-16 17:47 |只看该作者
先说一种解决方案吧: chmod +s /usr/sbin/mtr 即可,解释如下(比较啰嗦)

Linux的权限模型:
  - 对于某个文件而言, Linux对其3类对象各自分别定义了3种不同的权限
  - 这3类对象:  属主u、属组g、其他o
  - 这3种权限:  读r、写w、执行x  
  注意:每个对象都拥有3种权限, 所以我们通过ls -l filename 看到的 -rwxr-xr-x 即该文件属主拥有读写执行、属组拥有读执行、其他用于拥有读执行权限。

进程的安全上下文:
  - 每个进程也有属主、属组,进程需要访问的文件也有属主、属组
  - 默认情况下进程的属主是进程发起者这个用户,比如你用 zhangsan 这个用户 执行mtr 那么mtr进程的属主就是 zhangsan
  - 进程的属组是这个用户的基本组

  而raw socket套接字需要root用户才能够使用,因此一个 zhangsan 普通用户执行mtr时当需要用到 raw socket时 进程的属主 zhangsan 并没有权限!因而报错。

至于为什么 chmod +s /usr/sbin/mtr 可以解决, 这是用到了SUID机制(类似还有SGID、STICKY)

SUID机制 可以让进程的属主不再是发起者(zhangsan用户) 而是该可执行程序文件的本身的属主(root用户),由于root用户可以获取raw socket因此可以顺利执行。
可自行CU查找这方面的知识,最典型的就是 passwd这个命令了。




您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP