为正在运行的进程授予功能

问题描述 投票:2回答:1

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

如何为此流程提供功能/权限?基于文件的功能设置仍然是一个梦想?

我已经尝试过libcap包和/usr/sbin/setpcaps api中的cap_set_proc()实用程序,但CAP_SETPCAP功能在系统上被阻止(基于带有2.6.20内核的Fedora 4的遗留系统),所以它不能授予/删除不同的功能 - 然后是自我过程。

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

linux permissions linux-capabilities privileged-functions
1个回答
1
投票

你不能。功能背后的安全模型(相反,“允许的功能集”)是它们可以被进程删除,从不添加。

如果您无法在体系结构中进行设置,以便从进程的父进程中正确继承功能,则可以尝试使用文件描述符传递在单独的进程中执行setsocktopt()调用。也就是说,设置一个在所需权限级别运行的“sockopt守护进程”,使用新套接字连接到它,使用sendmsg()传递文件描述符,并让它进行必要的调用。这是一个丑陋的API,解决方案是不必要的复杂。但是,重新架构应用程序的启动和初始化结构可能更为可取。

© www.soinside.com 2019 - 2024. All rights reserved.