gpt4 book ai didi

linux - arping : EPERM when run via strace

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:31 24 4
gpt4 key购买 nike

我想弄清楚 arping 是如何工作的,所以我用 strace 运行它,我得到:

socket(PF_PACKET, SOCK_DGRAM, 0)        = -1 EPERM (Operation not permitted)

如果我在没有 strace 的情况下运行它,它会工作并且会发送 arp 数据包。这怎么可能?它如何设法做我的用户无权做的事情?它也没有设置 setuid 位:

ls -lrtah `which arping`
-rwxr-xr-x 1 root root 19K Mai 7 2014 /usr/bin/arping

更有趣的是,如果我只是将可执行文件复制到主目录并运行,我会得到同样的错误:

~/tmp$ sudo cp /usr/bin/arping .
~/tmp$ ./arping -I enp2s0f0 192.168.2.1
arping: socket: Operation not permitted

在运行原始作品时:

~/tmp$ arping -I enp2s0f0 192.168.2.1
ARPING 192.168.2.1 from 1.2.3.4 enp2s0f0

最佳答案

arping 需要 CAP_NET_RAW 权限(aka 能力)才能发送它使用的低级数据包。 (其他 Unix 版本 [或更早的 linux 版本] 可能会将程序安装为 SetUID-to-root。)观察:

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

允许特权可执行文件被 straced(或完全通过 ptrace(2) 跟踪/调试)是一个潜在的安全问题,因此当可执行文件被跟踪时,除非跟踪进程已经获得特权,否则内核在执行期间会剥离任何功能或 Set-UID。换句话说,您可以使用 sudo strace arping ... 来解决这个问题(如果您已获得授权)。

关于linux - arping : EPERM when run via strace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47137827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com