制作 /bin/ping 可执行文件的副本

mts*_*zkw 5 permissions command-line ping setcap

我只用一个典型的cp /bin/ping p命令将我的 /usr/bin/ping 文件复制到另一个位置(我的主目录),然后它停止工作,因为缺乏权限。恰恰:

Ping: icmp open socket: 不允许操作。

我知道这sudo更能解决我的问题,但我不应该以超级用户身份登录
我也知道这(可能)是因为缺少某些权限或功能(事实上getcap,我复制的文件显示它缺少原始 ping 的功能),但不幸的是,setcap没有 root 权限我无法使用..或者我是?不知何故?

我怎样才能解决这个问题并能够使用我的 ping 文件副本./p

Oli*_*Oli 10

-rwsr-xr-x 1 root root 44168 May  7  2014 /bin/ping
Run Code Online (Sandbox Code Playgroud)

输入srws意思ping是setuid。当您运行它时,它会以其所有者 root身份运行。

这就是它如何具有ping权限。您可以,sudo setcap cap_net_raw=ep ./ping但最终 ICMP 位于“原始套接字”下,因此这不是少数操作。它会允许另一个应用程序欺骗网络流量。

为了使其“安全”和 ping,该文件必须由 root 拥有,以阻止其他用户编辑该应用程序。

也许setcap有一天会让您也为可执行文件指定哈希签名。

  • 以保留文件属性`sudo cp -a /bin/ping ./p` 的方式获取新副本可能更好(以防万一文件已经发生了一些不幸的事情)。 (3认同)