小编tom*_*x86的帖子

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

在我的开发盒上有这个限制是非常烦人的,因为除了我之外不会有任何用户.

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

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

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

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

linux iptables ipv6 root linux-capabilities

362
推荐指数
18
解决办法
26万
查看次数

特权容器和功能

如果我在特权模式下运行容器,它是否具有所有内核功能,还是需要单独添加它们?

linux-kernel docker linux-capabilities kubernetes

56
推荐指数
3
解决办法
7万
查看次数

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

似乎支持Linux内核中的细粒度功能,它允许为进程授予权限,例如,在不授予进程root权限的情况下打开原始套接字或提高线程优先级.

但是,如果有办法授予每个用户的能力,我想知道的是什么.也就是说,允许非root和非suid进程获取这些功能.

linux security permissions linux-capabilities

32
推荐指数
3
解决办法
3万
查看次数

Linux功能(setcap)似乎禁用了LD_LIBRARY_PATH

我用来LD_LIBRARY_PATH为应用程序设置某个用户库的路径.但是如果我在这个应用程序上设置功能

sudo setcap CAP_NET_BIND_SERVICE=eip myapplication
Run Code Online (Sandbox Code Playgroud)

然后LD_LIBRARY_PATH似乎被忽略了.当我启动程序时,Linux抱怨它无法找到某个共享库.

我猜这里有一些保护措施,以防止具有扩展权限的应用程序被劫持.有解决方法吗?

linux shared-libraries linux-capabilities

26
推荐指数
4
解决办法
1万
查看次数

如何获得Android的libcap(Linux功能库)?

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

我想使用sys/capabilities.h与NDK一起提供的与功能相关的API .但是当我尝试调用函数时cap_get_proc(),我得到"未定义的引用"错误.

android linux-capabilities

19
推荐指数
1
解决办法
2563
查看次数

使用C#和APM的CPU使用率不是100%的原因是什么?

我有一个CPU密集型的应用程序.在单个线程上处理数据时,CPU使用率会持续很长时间达到100%.因此应用程序的性能似乎受到CPU的约束.我已经多线程化了应用程序的逻辑,从而提高了整体性能.但是,CPU使用率几乎不超过30%-50%.我期望CPU(和许多核心)达到100%,因为我同时处理了许多数据集.

下面是我用来启动线程的逻辑的简化示例.当我运行这个例子时,CPU达到100%(在8/16核心机器上).但是,我使用相同模式的应用程序没有.

public class DataExecutionContext
{
    public int Counter { get; set; }

    // Arrays of data
}

static void Main(string[] args)
{
    // Load data from the database into the context
    var contexts = new List<DataExecutionContext>(100);
    for (int i = 0; i < 100; i++)
    {
        contexts.Add(new DataExecutionContext());
    }

    // Data loaded. Start to process.
    var latch = new CountdownEvent(contexts.Count);
    var processData = new Action<DataExecutionContext>(c =>
    {
        // The thread doesn't access data from a DB, file, 
        // network, …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading asynchronous

13
推荐指数
1
解决办法
6302
查看次数

在保留CAP_SYS_NICE的同时删除根UID

我正在尝试编写一个守护进程,它将使用setuid位以root身份启动,但随后会快速恢复为运行该进程的用户.但是,守护程序需要保留将新线程设置为"实时"优先级的能力.我用来设置优先级的代码如下(一旦创建就在一个线程中运行):

struct sched_param sched_param;
memset(&sched_param, 0, sizeof(sched_param));
sched_param.sched_priority = 90;

if(-1 == sched_setscheduler(0, SCHED_FIFO, &sched_param)) {
  // If we get here, we have an error, for example "Operation not permitted"
}
Run Code Online (Sandbox Code Playgroud)

但是,我遇到问题的部分是设置uid,同时保留进行上述调用的能力sched_setscheduler.

我有一些代码在我的应用程序的主线程中运行接近启动:

if (getgid() != getegid() || getuid() != geteuid()) {
  cap_value_t cap_values[] = {CAP_SYS_NICE};
  cap_t caps;
  caps = cap_get_proc();
  cap_set_flag(caps, CAP_PERMITTED, 1, cap_values, CAP_SET);
  cap_set_proc(caps);
  prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);
  cap_free(caps);
  setegid(getgid());
  seteuid(getuid());
}
Run Code Online (Sandbox Code Playgroud)

问题是在运行此代码后,我sched_setscheduler在上面的评论中提到了"不允许操作" .我究竟做错了什么?

c linux pthreads scheduler linux-capabilities

10
推荐指数
1
解决办法
5667
查看次数

制作设置POSIX文件功能的RPM

如何制作一个设置文件POSIX功能RPM?如果我尝试以非root用户身份进行操作,那么当我的makefile的安装挂钩尝试运行时,我会收到错误,但如果我不运行,将如何 复制这些功能?似乎没有任何方法可以在RPM spec文件中设置功能.rpmbuildsetcapsetcaprpmbuild

linux rpm rpm-spec linux-capabilities

9
推荐指数
1
解决办法
1397
查看次数

APM不支持公司代理

我运行时遇到的错误(sudo)apm install minimap(或任何其他包):

gyp info it worked if it ends with ok
gyp info using node-gyp@1.0.2
gyp info using node@0.10.35 | linux | x64
gyp http GET https://atom.io/download/atom-shell/v0.21.0/node-v0.21.0.tar.gz
gyp WARN install got an error, rolling back install
gyp ERR! install error 
gyp ERR! stack Error: tunneling socket could not be established, cause=Parse Error
gyp ERR! stack     at ClientRequest.onError (/usr/share/atom/resources/app/apm/node_modules/npm/node_modules/request/node_modules/tunnel-agent/index.js:168:17)
gyp ERR! stack     at ClientRequest.g (events.js:180:16)
gyp ERR! stack     at ClientRequest.emit (events.js:95:17)
gyp ERR! stack     at Socket.socketOnData (http.js:1593:9)
gyp ERR! stack …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu node.js atom-editor

9
推荐指数
2
解决办法
4886
查看次数

多个主机线程启动单个CUDA内核

对于我的CUDA开发,我使用的是具有16个内核的机器,以及1个带有16个SM的GTX 580 GPU.对于我正在做的工作,我计划启动16个主机线程(每个核心1个),每个线程启动1个内核,每个线程包含1个块和1024个线程.我的目标是在16个SM上并行运行16个内核.这可能/可行吗?

我试图尽可能多地阅读关于独立上下文的内容,但似乎没有太多可用的信息.据我了解,每个主机线程都可以拥有自己的GPU上下文.但是,如果我使用独立的上下文,我不确定内核是否会并行运行.

我可以将所有16个主机线程中的所有数据读入一个巨型结构,并将其传递给GPU以启动一个内核.但是,复制太多会降低应用程序的速度.

cuda cuda-streams

8
推荐指数
2
解决办法
3240
查看次数