在默认的Fedora bash配色方案中,“ / usr / bin / ping”显示为黄红色-这是什么意思?


32

列出目录时/usr/bin,您会看到 ping 显示为红色黄色:

ping显示为黄红色

该文件没有特殊功能:

$ file /usr/bin/ping
/usr/bin/ping: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for
GNU/Linux 2.6.32, BuildID[sha1]=2508ea2a85b70c68967b3e6345541430f5317d5f,
stripped

$ stat /usr/bin/ping
   File: '/usr/bin/ping'
   Size: 62096           Blocks: 136        IO Block: 4096   regular file
Device: 802h/2050d      Inode: 4457229     Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:ping_exec_t:s0
Access: 2016-11-01 10:02:57.332925719 +0100
Modify: 2016-06-22 14:01:14.000000000 +0200
Change: 2016-07-10 23:41:59.623796126 +0200
Birth: -

根据终端中不同的颜色是什么意思?,我们可以在其中找到列出颜色说明的脚本,“黄红色”表示“ ca”:

Fedora默认bash着色方案中显示的颜色

“ ca”是什么意思?也许这意味着此文件已从其他位置硬链接(/usr/bin/ping并且/usr/ping是同一文件)

PS问题出现在观看Explaining Dirty COW时ping在Ubuntu 上的命令显示为setuid root,听起来很奇怪:

setuid根ping

Answers:


51

这表明它ping具有额外的功能:

$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+ep

甚至(在Fedora上):

$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_admin,cap_net_raw+ep

这允许ping打开原始套接字(以及发送和接收ICMP数据包),而无需运行root

setcap(8)capabilities(7)提供更多细节。

从历史上看,它ping是安装setuid的,以便它可以像root原始套接字一样运行并可以使用它;一旦功能可用,许多发行版便转而使用它们,因为它们提供的对权限的更细粒度的控制似乎是可取的。但是,在Ubuntu中,安装程序显然存在问题,因此ping仍安装了setuid root(功能代码已在相关的维护程序脚本中禁用,该脚本来自Debian,在可能的情况下使用功能进行ping配置)。

该手册ping描述了其要求,因此:

ping需要CAP_NET_RAW执行以下功能:1)如果程序用于非回显查询(请参阅-N选项),或者2)如果内核不支持非原始ICMP套接字,或者3)如果不允许用户创建ICMP回显插座。该程序可用作set-uid根目录。


1
谢谢斯蒂芬。我的系统知识薄弱!我什至不知道功能的存在,它们从1999年1月26日内核2.2开始就存在。根据capabilities(7)手册页,没有标准控制功能,但是Linux功能实现是基于已废止的POSIX.1e草案标准。看到这里
David Tonhofer '16

他的屏幕快照指示suid root。
约书亚

1
Ubuntu中的@Joshua是的,但问题是关于Fedora(第一个屏幕截图)。
Stephen Kitt

2
值得一提的是,另一个系统上setuid root的原因是相同的(为了能够发送和接收ICMP数据包),只是通过了较细粒度的许可。
凯文·里德

感谢@KevinReid,我已将其添加到我的答案中。(Ubuntu的解释比我想象的要复杂!)
Stephen Kitt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.