问题标签 [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.
systemd - systemd 守护进程需要哪些功能来创建 cgroup?
在我的项目中,有时我需要能够以非特权用户的身份创建新的控制组。我决定为此编写一个 systemd 守护进程。
我在守护程序代码中使用libcgroup进行 cgroup 操作。
当我尝试创建 cgroup ( cgroup_create_cgroup
) 时,我收到 libcgroup 错误ECGROUPNOTALLOWED
( Cgroup, operation not allowed
)。如何允许我的守护进程创建新的 cgroup?
systemd .service 文件:
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!
c - 更改命名空间以获取功能
我有调用需要 CAP_NET_ADMIN 功能的函数的代码。如果我构建代码并按原样运行二进制文件,则会收到“RTNETLINK 答案:不允许操作”错误。如果我 sudo 运行它,那么它运行时不会出现错误。我可以更改命名空间以使我的二进制文件具有适当的运行能力吗?如果是这样,怎么做?
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 它会起作用,但我想避免这种情况。
linux - 为什么 CapEff 在 /proc/$PID/status 中全为零
我从 ping 二进制文件中删除了 setuid 位并添加cap_net_raw+p
如下:
然后我ping
在一个终端中运行并从另一个终端检查正在运行的进程的 /proc/$PID/status:
如果ping
当前正在运行,为什么是CapEff: 0000000000000000
?也不cap_net_raw
应该在有效集中吗?/proc/$PID/status 不反映线程的当前状态吗?
linux - 使用 linux 功能使用 sudo 运行 ifup 和 ifdown
我想通过使用 Linux 功能在没有 sudo 的情况下运行 ifup eth0 和 ifdown eth0 对于同一个问题,我为同一个 main.c 编写了代码
如果我将功能设置为二进制,如下所示:
所有功能均已设置,通过使用 getcap 命令进行验证
如果运行上面的代码,我会得到以下回复:
./main ifdown:无法打开锁定文件 /run/network/ifstate.eth0:权限被拒绝
有人可以帮我吗?
python - 在 /usr/bin/python2.7 上使用 setcap 不会为子任务提供权限
我(我们)正在使用 python 创建数据包并捕获回复以测试网络设备。为了提供我使用过的 python 功能:
当我检查功能时,设置看起来不错:
如果我运行我的脚本,我会收到以下错误:
如果我直接通过以下方式为 dumpcap 提供功能:
这使脚本运行,但它并没有解决我的 python 无法使用 cap_net_admin 的问题。
有什么方法可以检查我正在运行的 python 进程是否获得了正确的功能?或者为什么 python2.7 似乎没有继承我系统上的功能?
为了确保调用正确的文件/进程,我使用 /usr/bin/python2.7 作为要调用的可执行文件。相同的 python 代码适用于我公司的其他人。我正在运行 Ubuntu 16.04。问候
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) 的调用失败:
设置上限:
尝试运行:
现在一个成功的案例:
没有能力:
运行正常:
我一直试图在手册页中找到原因并尝试使用不同的功能,但到目前为止还没有运气。最让我困惑的是,应用程序以更少的功能运行而没有更多的功能。
有人可以帮助我并澄清问题吗?
c++ - 检查 Linux 功能以设置线程优先级
pthread_setschedparam()
我有一个用于设置线程优先级的 C++ 应用程序。在 docker 容器内,这会因 EPERM 而失败。
如何检测我的进程是否具有设置线程优先级的必要功能?
networking - 在 systemd 中使用 CAP_NET_RAW 运行任何人(或动态用户)
我想运行具有 cap_net_raw 功能的服务,但不与文件系统和/或其他进程进行任何交互。我的程序将使用原始套接字和普通套接字(用于 API)、stdout/err 进行日志记录,仅此而已。
我想编写 systemd.service 文件来执行此操作,但我无法为DynamicUser
,User
和CapabilityBoundingSet
.
我的(非工作)单元如下所示:
如何配置动态用户“无人” CAP_NET_RAW
?