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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为正在运行的进程授予功能相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

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

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

以上是关于为正在运行的进程授予功能的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

多线程编程

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程

运行/调试你的PHP代码

java中的进程,线程,线程池总结

隐蔽的恶意代码启动