首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有setuid和功能的Fedora上,ping是如何工作的?

问在没有setuid和功能的Fedora上,ping是如何工作的?
EN

Unix & Linux用户
提问于 2020-06-14 23:13:23
回答 2查看 3.3K关注 0票数 18

据我所知,ping需要创建一个生插座 (它需要根访问或cap_net_raw功能)。

据我所知,这些年来的趋势是删除塞图德二进制文件并用功能替换它们。

但是,当我查看Fedora 32上的ping二进制文件时,它似乎没有:

代码语言:javascript
复制
$ ls -la $(which ping)
-rwxr-xr-x. 1 root root 82960 May 18 10:26 /usr/bin/ping
$ sudo getcap -v $(which ping)
/usr/bin/ping
$   

平需要在软呢帽上打开生插座吗?或者是否有其他方式允许它打开原始套接字?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-06-14 23:28:53

我想https://fedoraproject.org/wiki/Changes/EnableSysctlPingGroupRange回答了你的问题:

启用Linux内核的net.ipv4.ping_group_range参数来覆盖所有组。这将允许操作系统上的所有用户创建ICMP套接字,而无需使用setuid二进制文件,也不需要具有CAP_NET_ADMIN和CAP_NET_RAW文件功能。

相互参照的细节

sysctl文档写道,

ping_ group _ range -2个整数将ICMP_PROTO数据报套接字限制为组范围内的用户。默认的是"1 0",意思是没有人(甚至不是根)可以创建ping套接字。将其设置为"100 100“将授予单个组的权限。"0 4294967295“将为世界启用它,"100 4294967295”将为用户启用它,而不是守护进程。

一个旧的代码示例演示了这个特性的使用,特别是展示了使用IPPROTO_ICMP标志创建一个套接字,以确定它将用于原始ICMP。

代码语言:javascript
复制
int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP)
票数 19
EN

Unix & Linux用户

发布于 2020-06-14 23:28:44

在软呢帽31中,内核参数net.ipv4.ping_group_range被设置为覆盖所有组。

这将允许操作系统上的所有用户创建ICMP Echo套接字,而无需使用setuid二进制文件,也不需要具有CAP_NET_ADMIN和CAP_NET_RAW文件功能。

代码语言:javascript
复制
sysctl net.ipv4.ping_group_range

net.ipv4.ping_group_range = 0   2147483647
票数 12
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/592911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档