问题标签 [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 投票
25 回答
332539 浏览

linux - 有没有办法让非 root 进程绑定到 Linux 上的“特权”端口?

对我的开发框有这个限制是非常烦人的,因为除了我之外永远不会有任何用户。

我知道标准的解决方法,但没有一个完全符合我的要求:

  1. authbind(Debian 测试中的版本,1.0,仅支持 IPv4)
  2. 使用 iptables REDIRECT 目标将低端口重定向到高端口(ip6tables 的“nat”表尚未实现,iptables 的 IPv6 版本)
  3. sudo(以root身份运行是我要避免的)
  4. SELinux(或类似的)。(这只是我的开发箱,我不想引入很多额外的复杂性。)

是否有一些简单sysctl的变量允许非 root 进程绑定到 Linux 上的“特权”端口(端口小于 1024),或者我只是运气不好?

编辑:在某些情况下,您可以使用功能来执行此操作。

0 投票
1 回答
4646 浏览

linux - 将功能授予正在运行的进程

已经运行的进程需要特权指令,例如使用 SO_RCVBUFFORCE 套接字选项。此进程作为普通用户进程运行。

如何赋予此过程能力/权限?基于文件的能力设置仍然是一个梦想?

我已经尝试了/usr/sbin/setpcapslibcap 包和cap_set_proc()api 中的实用程序,但该CAP_SETPCAP功能在系统上被阻止(基于 Fedora 4 和 2.6.20 内核的旧系统),因此它无法授予/删除其他人的功能过程。

考虑为该进程设置临时 root uid,但有没有办法更改外部已运行进程的有效 UID?setuid()// seteuid()... 函数可以只修改当前进程(谁在调用该函数)。

0 投票
4 回答
39487 浏览

linux - 是否可以为每个用户配置 Linux 功能?

Linux 内核中似乎支持细粒度的功能,它允许授予进程权限以执行诸如打开原始套接字或提高线程优先级等操作,而无需授予进程 root 权限。

但是,我想知道是否有办法授予每个用户的功能。也就是说,允许非 root 和非 suid 进程获得这些能力。

0 投票
2 回答
1232 浏览

java - 能力 & Linux & Java

我正在试验 Java 应用程序的 Linux 功能。我不想为解释器(JVM)添加功能,所以我尝试编写一个简单的包装器(将调试信息打印到标准输出):

这样,我可以看到为这个可执行文件设置了功能:

getcap显示

我将功能设置为可继承,所以应该没有问题。但是,java 仍然不想绑定到特权端口。

我收到此错误:

有人可以帮我解决这个问题吗?

0 投票
3 回答
6473 浏览

posix - 如何使用 CAP_SYS_RESOURCE 执行进程

我正在使用 Linux POSIX mqueue 实现,但我遇到了问题。对于当前内核,最大消息大小为 1MB,但我需要没有限制。

man mq_overview表示如果进程是特权进程(具有CAP_SYS_RESOURCE能力的进程),它就没有限制。我认为由 root 执行的进程已经具有特权,但我仍然收到“消息太长”错误(我的消息有 2MB)。

如何CAP_SYS_RESOURCE为流程添加功能?

0 投票
2 回答
10424 浏览

linux - 带有 CAP_SETUID 的 setuid(0)

我正在尝试将我的 uid 更改为 0 作为具有该CAP_SETUID功能的非 root 用户。我有以下程序:

我按如下方式分配 setuid 功能:

我得到以下输出

我希望第二个 printf() 也能显示出这种CAP_SETUID能力。不知何故,我的进程没有获得 setuid 文件功能。我在这里做错了什么?

0 投票
6 回答
3994 浏览

linux - gdb 似乎忽略了可执行功能

我正在调试一个使用libnetfilter_queue. 该文档指出,用户空间队列处理应用程序需要CAP_NET_ADMIN能够运行。我已使用该setcap实用程序完成此操作,如下所示:

我已验证这些功能已正确应用,因为 a) 程序正常工作并且 b)getcap返回以下输出:

但是,当我尝试从命令行使用gdb(例如)调试该程序时,由于没有设置正确的权限而失败。否则,$ gdb ./a.out调试功能可以正常工作,并且可以正常调试。gdb

我什至尝试将这些功能应用于gdb二进制文件本身,但无济于事。我这样做了(正如手册页所记录的那样,“ i”标志可能允许被调试者从调试器继承能力。

是否有一些琐碎的事情我错过了,或者这真的不能完成吗?

0 投票
4 回答
3231 浏览

android - 如何获取适用于 Android 的 libcap(Linux 功能库)?

Linux 功能 (libcap.so) 库是否可用于 Android?如果没有,我该如何编译它?

我想使用sys/capabilities.hNDK 中包含的与功能相关的 API。但是当我尝试调用类似的函数时cap_get_proc(),我得到“未定义的引用”错误。

0 投票
4 回答
6168 浏览

linux - fork 和 execve 继承非特权父进程的能力

在 Linux 系统中,非特权用户启动程序。创建的进程CAP_NET_RAW,CAP_NET_ADMIN具有模式为的功能effective,permitted,inheritable。然后,该进程通过调用forkexecv调用另一个程序udhcpc创建一个子进程,但该子进程没有CAP_NET_RAW,CAP_NET_ADMIN按预期继承这些功能。即使在设置我调用的功能之前prctl(PR_SET_KEEPCAPS, 1)

关于如何继承非特权父进程的能力的任何fork建议execve

0 投票
2 回答
4750 浏览

linux - /usr/bin/passwd 和 CAP_CHOWN 功能

我正在试验 Linux 功能,我注意到要使passwd程序在没有 Set-UID root 的情况下工作,它需要具有CAP_CHOWN功能(除了其他一些功能)。从逻辑上讲,为什么它需要CAP_CHOWN呢?

顺便说一句,如果我删除该功能,passwd 会给我一个“令牌操作错误”。

编辑:我使用的是没有 SELinux 的 Ubuntu 11.04。我试图在passwd没有 Set-UID root 的情况下开始工作。