Linux 发行版上如何实现非 root 用户的 ping?

2024-01-08

我正在浏览 ping 表单的代码iputils http://www.skbuff.net/iputils/适用于 Linux 的包。

我注意到ping 使用原始套接字 https://sourceforge.net/p/iputils/code/ci/HEAD/tree/ping.c#l142 SOCK_RAW,任何用户空间应用程序都需要 root 权限才能使用。

Linux 发行版的开发人员如何设法为非 root 用户提供 ping 命令?


在现代发行版上,ping 使用扩展文件属性向非特权用户授予 CAP_NET_RAW。

我的 Debian 测试示例如下:

jbm@sumo:~$ ls -l /bin/ping
-rwxr-xr-x 1 root root 57048 Mar  1 15:49 /bin/ping
jbm@sumo:~$ filecap /bin/ping
file                 capabilities
/bin/ping     net_raw

...这比 SUID 更好,安全性方面:这里只有一种功能,而不是完整的根集(我的 4.5 内核有 37 种功能)。

编辑:有几件事。

第一:代替filecap,你可能想使用getcap.

后者带有“常规”lipcap及其 CLI 工具,无论发行版如何,您的系统上都肯定有这些工具。与前者相反,后者带有libcap-ng.

第二:关于Ubuntu。

事实上,现在我在办公室,Debian 测试主机上有几个 Ubuntu LTS VM(14.04 和 16.04)来宾,我可以看到Canonical 确实使用 SUID 位而不是扩展文件属性。他们似乎依赖 AppArmor MAC,我想说我们这里有一个很好的例子来说明为什么这可能不是最好的主意first措施:正确处理的行政文书工作量很大。

因此,虽然 Canonical 确实有一些 AppArmor 设置tcpdump,他们不为ping(相反 SUID = 免费的完全 root 权限),也不是例如dumpcap(运行数据包捕获的进程wireshark),这意味着sudo,这又是完全的 root 权限(但至少有密码)。希望上游开发人员做正确的事情:在源代码级别可以对 iputils 进行功能删除,例如ping or for dumpcap,所以这取决于集成商(发行版包维护者)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 发行版上如何实现非 root 用户的 ping? 的相关文章

  • mysql_real_escape_string 未定义

    我正在使用 PHP 版本 5 3 并尝试使用mysql real escape string unescaped string 在我的代码中 但出现错误 Fatal error Call to undefined function mysq
  • 在 Python 中如何确定 IP 地址是否私有?

    在 Python 中 确定 IP 地址 例如 127 0 0 1 or 10 98 76 6 是在专用网络 http en wikipedia org wiki Private network 代码听起来并不难写 但可能存在比立即显而易见的
  • 包名中的“dev”后缀?

    使用 apt get 时 我看到一些软件包的名称后面有一个 dev 后缀 libreadline5 libreadline dev zlib1g zlib1g dev 这些到底是什么 我应该安装它们吗 你需要这些编译并链接因为它们提供了要链
  • Python中的非阻塞套接字?

    是我 还是我找不到关于Python中非阻塞套接字的好教程 我不确定如何准确地工作 recv和 send在里面 根据 python 文档 至少是我的理解 recv ed or send ed 数据可能只是部分数据 那么这是否意味着我必须以某种
  • 如何在 Windows 8.1 中的 anaconda(python3.6) 中构建 cython pyx 到 pyd?

    我参考了一些网站在 Windows 8 1 中将 pyx 构建为 pyd 我正在使用带有 Spyder IDE 的 Anaconda Distribution 我已经开发了 pyx 文件 但无法在 Anaconda 命令提示符 中构建 水蟒
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • 如何在ubuntu服务器上安装android SDK

    我在 ubuntu 服务器中有一个 React Native 项目 我想构建一个用于生产的 Android 应用程序 为此 我首先必须生成 Gradle Wrapper 文件 因此我在中运行此命令android目录 gradle wrapp
  • 限制 SFTP 用户只能访问主目录

    我正在尝试在 EC2 ubuntu 服务器上设置客户端 SFTP 空间 访问权限仅限于该用户的主目录 关于此的其他主题只有大约六千个 而且我在其他选项卡中打开了其中的大多数主题 这看起来很简单 我已经搞定了 sudo groupadd lo
  • tar 命令在提取时更改所有者:组

    使用此命令提取文件时tar zxf bluez arm package tgz文件和目录的所有者 1000 组 脉冲 是 更改如下例 Example drwxrwxr x 4 1000 pulse 1024 Jul 21 00 32 dbu
  • 如何让服务器监听多个端口

    我想用同一台服务器监听 100 个不同的 TCP 端口 这是我目前正在做的事情 import socket import select def main server socket socket socket socket AF INET
  • 无法从外部 bash 脚本正确设置 MySQL 密码

    我有两个脚本 主要的一个脚本执行一些不同的操作并调用第二个脚本 第二个脚本安装 MySQL 从我的主脚本中我做了这样的事情 read p Set the password for the database min 4 characters
  • 理解 htonl() 和 ntohl()

    我正在尝试使用 unix 套接字来测试向本地主机发送一些 udp 数据包 据我了解 当设置 ip 地址和端口以发送数据包时 我会填写我的sockaddr in将值转换为网络字节顺序 我在 OSX 上 我很惊讶这个 printf ntohl
  • 使用java实现网站家长控制

    我想用java编写一个独立的应用程序来控制对受限网站的访问 而孩子们在父母不在身边时使用互联网 主要思想是根据浏览者来阻止成人 不需要的网站 用例是这样的 1 用户打开浏览器 2 我们的应用程序 在后台运行 应该弹出一个身份验证框并要求用户
  • 如何在 Anaconda 中使用 Python Dbus 绑定

    我正在尝试在 Anaconda python 环境上安装 dbus 但我很挣扎 这是我收到的错误消息 e gateway python Python 3 5 4 Anaconda custom 64 bit default Oct 13 2
  • Cuda 6.5 找不到 - libGLU。 (在 ubuntu 14.04 64 位上)

    我已经在我的ubuntu上安装了cuda 6 5 我的显卡是 GTX titan 当我想要制作 cuda 样本之一时 模拟 粒子 我收到这条消息 gt gt gt WARNING libGLU so not found refer to C
  • Rails 是否支持侦听 UDP 套接字的简洁方式?

    在 Rails 中 集成更新模型某些元素的 UDP 侦听过程的最佳方式是什么 特别是向其中一个表添加行 简单的答案似乎是在同一进程中使用 UDP 套接字对象启动一个线程 但不清楚我应该在哪里执行适合 Rails 方式的操作 有没有一种巧妙的
  • 为多线程 UDP 客户端执行“close ()”时套接字描述符未释放

    我在下面编写了 UDP 客户端 它基本上生成一个单独的线程来接收数据报 但是数据报仅在主线程中发送 现在 在 Linux 发行版上实例化 udpClient 1 UDP 客户端后按 ctrl D 实现退出循环 围绕 getline 调用 并
  • /etc/php5/conf.d 文件夹中的 .ini 文件有什么用?

    我知道 ini 文件位于 etc php5 cli与 PHP 的 CLI 使用有关 文件位于 etc php5 fpm是关于 PHP 的 FastCGI FPM 方面 但是位于以下位置的 ini 文件又如何呢 etc php5 conf d
  • 在 PowerShell 中通过 UDP 发送和接收数据

    我正在尝试编写一个脚本来使用 PowerShell 进行测试和应用 测试应包括通过 UDP 向远程服务器发送字符串 然后读取该服务器的响应并对结果执行某些操作 我需要的唯一帮助是脚本的中间两个步骤 发送字符串 然后 接收响应 在端口 UDP
  • 尝试从输入流检索文本时应用程序挂起

    情况 我确实查看了您的代码 正如我怀疑的那样 您的问题与您发布的代码完全无关 您的 GUI 完全忽略 Swing 线程规则 并在主 Swing 事件线程 称为Event Dispatch T螺纹或EDT 由于该线程负责所有 Swing 绘图

随机推荐

  • 如何使用 powershell 在 wsl 上运行 bash 脚本?

    在 Windows 上的当前目录中 我有以下脚本文件 simple script sh bin bash echo hi from simple script 我希望通过 powershell 命令行在 wsl 上运行此脚本 使用wsl命令
  • 自动将 Sybase .ADT 文件转换为 SQL

    我正在处理我获得的一些数据 这些数据是通过使用嵌入式 Advantage 数据库服务器的程序读取的 该程序不是我编写的 并且不具备我需要的所有功能 我想将这些数据转换为不同的格式 以便我可以更自由地使用它 例如 MySQL 我知道Sybas
  • 防止将重复的项目添加到列表框中

    我有这段代码用于添加选定的项目ListBox到另一个 如何防止用户重复添加某个项目 我想要ListBox他们正在添加lstBoxToUserProjects仅包含不同的项目 没有重复的条目 protected void btnAddSele
  • AsyncTask 错误中的 Android JSON

    我正在尝试使用 asynctask 从 google 获取 JSON 数据 但我收到很多错误 我不知道为什么 我是 Android 开发的新手 我对它很感兴趣 然后又退出了 P 然后单击执行异步任务的按钮 new usdjson execu
  • 使用 Yii 自动存储日期时间

    我开始使用 Yii 学习 php 我有一个很大的问题 也许你可以帮助我 我正在使用表单来创建用户 我想将表单中引入的用户数据存储到数据库 MySQL 中 但我还必须将日期和时间存储在数据库的日期时间字段中 我看到一些扩展如 CJUIDATE
  • TYPO3:从 Extbase 中的文件引用中获取路径

    我使用 Fluid 和 Extbase TYPO3 6 1 创建了一个自定义内容元素 您可以在其中定义图片 在图片设置中 我可以设置一个img链接 它的目标是一个文件 在我的控制器中我可以访问这些数据 this gt configurati
  • webkit 中的 CSS3 动画暂停/取消暂停跳过和跳跃

    我已经实现了动画暂停 如下所述 如何使用 JavaScript 暂停和恢复 CSS3 动画 https stackoverflow com questions 5804444 how to pause and resume css3 ani
  • XAML:DataTemplate 中的自定义绑定用于 GridViewColumn CellTemplate

    我希望在整个 GridView 中重用资源中的以下 DataTemplate
  • 如何实现hashCode和equals方法

    我应该如何实施hashCode and equals 对于 Java 中的以下类 class Emp int empid unique across all the departments String name String dept n
  • 高分辨率的响应式字体大小在 MUI 5 中不起作用

    我在用材质 UI v5 https mui com 在我的 React 应用程序中 并使用响应式字体大小 https mui com customization theming responsivefontsizes theme optio
  • Android:findViewById() 方法返回我们不需要转换的值

    因为我厌倦了为每个人编写一个强制转换运算符Activity findViewById 返回原始数据View 我终于尝试了互联网建议的一种方法 http biginteger blogspot jp 2011 04 better findvi
  • C#:Func<> 而不是方法? [复制]

    这个问题在这里已经有答案了 这是一个让大家好奇的问题 使用 Func 而不是方法有什么坏处 缺点吗 简单的例子 private static Func
  • Glide 不接受 GifDrawable 作为目标参数

    我试图用 glide 找出 gif 的结尾 这是我在网上找到的代码 Glide with thisActivity asGif load R raw logo gif motion low listener object RequestLi
  • 在 C# 中搜索子目录

    我有一个文件名列表 我想搜索一个目录及其所有子目录 这些目录每个包含大约 200 000 个文件 我的代码找到该文件 但每个文件大约需要 20 分钟 有人可以建议更好的方法吗 代码片段 String file names File Read
  • 在 Rails 中通过 JS 设计注册#update

    我正在尝试通过 Devise 使用 AJAX 更新用户模型 并让 Devise 使用正确的 javascript 文件进行响应 我想将表单远程提交到 Registrations update 操作 但这不适用于 Devise 的默认响应 它
  • 在 PHP 中初始化(空)数组的最佳方法

    在某些其他语言 例如 AS3 中 已经注意到 如果这样做 初始化新数组会更快var foo 而不是var foo new Array 出于对象创建和实例化的原因 我想知道 PHP 中是否有等价的东西 class Foo private ar
  • 我什么时候应该在 WebGL/OpenGL 中启用/禁用顶点位置属性?

    我正在编写一些 WebGL 代码 该代码具有多个按顺序运行的着色器程序 以前 我使用的是gl enableVertexAttribArray 根据我的 gl 上下文和着色器初始化期间的需要 我假设 也许是错误的 调用此函数是设置特定于由gl
  • 应该最终返回外部并且异常处理是否完美?

    我不应该把这个方法的返回值放在finally中吗 Pylint 给出了这句话的错误 3 return statement in finally block may swallow exception lost exception def s
  • “ez_setup.py”语法错误

    我尝试通过从命令行 64 位 Windows 机器 运行 ez setup py 来安装 easy install 并在以下行中获取 无效语法 except pkg resources VersionConflict e Python版本3
  • Linux 发行版上如何实现非 root 用户的 ping?

    我正在浏览 ping 表单的代码iputils http www skbuff net iputils 适用于 Linux 的包 我注意到ping 使用原始套接字 https sourceforge net p iputils code c