问题标签 [linux-capabilities]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
322 浏览

systemd - systemd 守护进程需要哪些功能来创建 cgroup?

在我的项目中,有时我需要能够以非特权用户的身份创建新的控制组。我决定为此编写一个 systemd 守护进程。

我在守护程序代码中使用libcgroup进行 cgroup 操作。

当我尝试创建 cgroup ( cgroup_create_cgroup) 时,我收到 libcgroup 错误ECGROUPNOTALLOWED( Cgroup, operation not allowed)。如何允许我的守护进程创建新的 cgroup?

systemd .service 文件:

0 投票
1 回答
1269 浏览

yocto - Yocto getcap: command not found

I'm updating our yocto from fido to morty, and have been migrating recipes and such to work with it, but now I dont have getcap on the target.

I checked that PATH is correctly set up:

and that there is no getcap in /usr/bin/ as there should be.

I understood that libcap should provide these, and I have libcap as dependency on multiple recipe, which build just fine, so I don't understand why they are not installed on the target.

I have no clue where to start looking for the problem, so any help is appreciated!

0 投票
0 回答
225 浏览

c - 更改命名空间以获取功能

我有调用需要 CAP_NET_ADMIN 功能的函数的代码。如果我构建代码并按原样运行二进制文件,则会收到“RTNETLINK 答案:不允许操作”错误。如果我 sudo 运行它,那么它运行时不会出现错误。我可以更改命名空间以使我的二进制文件具有适当的运行能力吗?如果是这样,怎么做?

0 投票
1 回答
778 浏览

c - 设置功能时的 pthread_setname_np()

我从 man pthread_setname_np编译了示例程序

我设置了我的程序 a.out 的 cap_net_raw 能力。

令人惊讶的是,程序在执行时失败:

当我删除它起作用的功能时..

所以对我来说,当我添加一项功能时,我似乎拥有更少的权限。有人可以解释一下吗?

感谢您的回复;-)

一些附加信息:

  • 我的目标支持功能我使用 ping 命令和 CAP_NET_RAW 检查了它
  • 内核 4.4.32-rt43
  • RFS:分机4
  • 我将帖子简化为示例程序,我同意将 CAP_NET_RAW 添加到该程序是没有意义的。
  • 如果我添加 CAP_DAC_OVERRIDE 它会起作用,但我想避免这种情况。
0 投票
1 回答
863 浏览

linux - 为什么 CapEff 在 /proc/$PID/status 中全为零

我从 ping 二进制文件中删除了 setuid 位并添加cap_net_raw+p如下:

然后我ping在一个终端中运行并从另一个终端检查正在运行的进程的 /proc/$PID/status:

如果ping当前正在运行,为什么是CapEff: 0000000000000000?也不cap_net_raw应该在有效集中吗?/proc/$PID/status 不反映线程的当前状态吗?

0 投票
1 回答
550 浏览

linux - 使用 linux 功能使用 sudo 运行 ifup 和 ifdown

我想通过使用 Linux 功能在没有 sudo 的情况下运行 ifup eth0 和 ifdown eth0 对于同一个问题,我为同一个 main.c 编写了代码

如果我将功能设置为二进制,如下所示:

所有功能均已设置,通过使用 getcap 命令进行验证

如果运行上面的代码,我会得到以下回复:

./main ifdown:无法打开锁定文件 /run/network/ifstate.eth0:权限被拒绝

有人可以帮我吗?

0 投票
1 回答
1517 浏览

python - 在 /usr/bin/python2.7 上使用 setcap 不会为子任务提供权限

我(我们)正在使用 python 创建数据包并捕获回复以测试网络设备。为了提供我使用过的 python 功能:

当我检查功能时,设置看起来不错:

如果我运行我的脚本,我会收到以下错误:

如果我直接通过以下方式为 dumpcap 提供功能:

这使脚本运行,但它并没有解决我的 python 无法使用 cap_net_admin 的问题。

有什么方法可以检查我正在运行的 python 进程是否获得了正确的功能?或者为什么 python2.7 似乎没有继承我系统上的功能?

为了确保调用正确的文件/进程,我使用 /usr/bin/python2.7 作为要调用的可执行文件。相同的 python 代码适用于我公司的其他人。我正在运行 Ubuntu 16.04。问候

0 投票
1 回答
1195 浏览

linux - 无法打开 uid_map 以从具有 cap_setuid 功能集的应用程序写入

在玩弄user_namespaces(7)中的示例时,我遇到了一种奇怪的行为。

应用程序的作用

应用程序user-ns-ex使用 CLONE_NEWUSER 调用 clone(2),从而在新的用户命名空间中创建一个新进程。父进程将映射 ( 0 1000 1) 写入 /proc//uid_map 文件并(通过管道)告诉子进程它可以继续。然后子进程 execs bash

我在这里复制了源代码。

问题

如果我将其设置为无功能或全部设置,应用程序将打开 /proc//uid_map 进行写入。

当我仅设置 set_capuid、set_capgid 和可选 cap_sys_admin 时,对 open(2) 的调用失败:

设置上限:

尝试运行:

现在一个成功的案例:

没有能力:

运行正常:

我一直试图在手册页中找到原因并尝试使用不同的功能,但到目前为止还没有运气。最让我困惑的是,应用程序以更少的功能运行而没有更多的功能。

有人可以帮助我并澄清问题吗?

0 投票
3 回答
2043 浏览

c++ - 检查 Linux 功能以设置线程优先级

pthread_setschedparam()我有一个用于设置线程优先级的 C++ 应用程序。在 docker 容器内,这会因 EPERM 而失败。

如何检测我的进程是否具有设置线程优先级的必要功能?

0 投票
1 回答
603 浏览

networking - 在 systemd 中使用 CAP_NET_RAW 运行任何人(或动态用户)

我想运行具有 cap_net_raw 功能的服务,但不与文件系统和/或其他进程进行任何交互。我的程序将使用原始套接字和普通套接字(用于 API)、stdout/err 进行日志记录,仅此而已。

我想编写 systemd.service 文件来执行此操作,但我无法为DynamicUser,UserCapabilityBoundingSet.

我的(非工作)单元如下所示:

如何配置动态用户“无人” CAP_NET_RAW