gpt4 book ai didi

linux - Linux 容器中的 setcap cap_net_admin 阻止用户访问每个文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:07:52 27 4
gpt4 key购买 nike

我在 CentOS 容器中有一个 tcpdump 应用程序。我试图以非 root 身份运行 tcpdump。关注此论坛帖子:https://askubuntu.com/questions/530920/tcpdump-permissions-problem (以及一些其他文档强化了这一点),我尝试在容器中使用 setcap cap_net_admin+eip/path/to/tcpdump 。

运行此命令后,我尝试以其他用户身份运行 tcpdump(具有 tcpdump 权限),但收到“操作不允许”。然后我尝试以 root 身份运行它,之前它一直在工作,但也得到了“不允许操作”的信息。运行 getcap 后,我验证了权限是否正确。我认为这可能是我的特定用例,因此我尝试对其他几个可执行文件运行 setcap 命令。每个可执行文件都返回“不允许操作”,直到我运行 setcap -r/filepath。

关于如何解决这个问题,或者甚至在不使用 root 运行 tcpdump 的情况下解决这个问题,有什么想法吗?

最佳答案

默认情况下,容器中不包含 NET_ADMIN 功能,因为它可能允许容器进程修改和转义应用于容器的任何网络隔离设置。因此,使用 setcap 在二进制文件上显式设置此权限将会失败,因为 root 和容器中的所有其他用户都被阻止使用该功能。要使用此功能运行容器,您需要使用用于启动容器的命令将此功能添加到容器中。例如

docker run --cap-add NET_ADMIN ...

但是,我相信您所需要的只是 NET_RAW (setcap cap_net_raw),它包含在默认功能中。来自人的能力:

   CAP_NET_RAW
* Use RAW and PACKET sockets;
* bind to any address for transparent proxying.

关于linux - Linux 容器中的 setcap cap_net_admin 阻止用户访问每个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58941093/

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