Linux中使用Nmap , hping, ping 提示以下错误时
PHP: [main] can't open raw socket
Bash: Couldn’t open a raw socket. Error: Permission denied (13)
非root进程调用带有网络原始套接字(raw socket) 的相关命令时,会报错,需要使用getcap 设置 capabilities
(具体参考:https://cloud.tencent.com/developer/article/1539041)
# 以 ping 为例,先 which 查看命令地址
which ping
# 如无返回就是没有设置cap
getcap /usr/bin/ping
# 设置cap
sudo setcap cap_net_raw+ep /usr/bin/ping
# 再次getcap 已有设置值
getcap /usr/bin/ping
#/usr/bin/ping cap_net_raw=ep
setcap 之后问题就解决了。