修复 Debian 中的 Ping 权限问题
在一个512M vps上安装 Debian Trixie后,发现无法使用 ping命令。尝试执行时,收到错误信息:
ping: socket: Operation not permitted
并且附加提示可能缺少 cap_net_raw+p 权限或 setuid 设置。
不过,使用root用户时ping正常工作,因此问题出在权限上。
搜索后,发现两种方法可以启用ping。
更改 sysctl 权限
如果要对一组用户启用 ping,可以运行以下命令:
sudo sysctl net.ipv4.ping_group_range='0 4294967295'
如果只想对当前用户启用 ping,可以将范围设为自己的用户 ID,例如 1001 1001。
要使该更改永久生效,可以在 /etc/sysctl.d/99-allow-ping.conf 文件中添加相应配置。但请不要这样做,继续往下看有更优的方案。
为 ping 可执行文件设置setcap(capabilities)
首先,检查 ping 是否已经具有某些 capabilities:
getcap /usr/bin/ping
如果没有,则手动设置所需权限:
setcap cap_net_raw+p /usr/bin/ping
最佳方案
实际上,正确的解决方案是安装软件包:linux-sysctl-defaults, 该包默认推荐安装,但这台vps内存只有512M ,实际上没有安装。
安装后,它会在/usr/lib/sysctl.d/50-default.conf 中添加以下配置:
-net.ipv4.ping_group_range = 0 2147483647
该配置与前面提到的 sysctl 方案类似,重启生效后即可正常使用ping。
- 原文作者:Hello,world!
- 原文链接:https://330220.xyz/post/%E4%BF%AE%E5%A4%8D-Debian-%E4%B8%AD%E7%9A%84-Ping-%E6%9D%83%E9%99%90%E9%97%AE%E9%A2%98/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。