Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 运行启动停止守护程序的功能_C_Linux - Fatal编程技术网

C 运行启动停止守护程序的功能

C 运行启动停止守护程序的功能,c,linux,C,Linux,我想停止由root启动的进程(proc2) 通过我的非特权流程(proc1) 我的进程proc1调用execl(“/bin/sh”、“sh”、“-c”、“/etc/init.d/proc2 restart”、nullptr) 和/etc/init.d/proc2重新启动调用start-stop守护进程 由于缺少杀死proc2(suid root)的功能,因此失败 什么样的功能必须设置为非特权进程proc1才能运行启动-停止守护进程(kill proc2)?我将重写您的问题,因为如何从用户级进程触

我想停止由root启动的进程(proc2) 通过我的非特权流程(proc1)

我的进程proc1调用execl(“/bin/sh”、“sh”、“-c”、“/etc/init.d/proc2 restart”、nullptr)

和/etc/init.d/proc2重新启动调用start-stop守护进程

由于缺少杀死proc2(suid root)的功能,因此失败


什么样的功能必须设置为非特权进程proc1才能运行启动-停止守护进程(kill proc2)?

我将重写您的问题,因为如何从用户级进程触发管理任务(需要根权限)

设置将接受从非特权任务激活的特权继电器的常用方法。在Unix/Linux世界中,有两种经典的方法可以做到这一点:

  • 遗留方式:root拥有的一个可执行文件,设置了seuid位,并且只能由允许执行特权任务的一组用户执行。但是setuid可执行文件具有很高的风险,因为任何错误都可能导致严重后果。众所周知的
    sudo
    只是这种根seutid可执行文件的一个示例,但它已经过广泛的测试
  • 守护进程方式:特权守护进程等待某个事件并执行特权任务。与贫困世界的接触只是事件,因此风险通常被认为较低。事件通常是目录中存在文件,或fifo文件中写入的消息,或网络数据包

  • 不管怎样,您必须考虑安全问题:如何确保仅合法触发特权任务。

    您可以使用
    sudo
    并为该进程设置一个规则。您可以添加一个您现在正在执行的操作的示例吗?我必须将功能限制在所需的范围内,即非特权进程只能杀死特权进程。I正在考虑使用实用程序的功能。非特权进程必须通过execl将CAP_KILL传递给bash。这样,bash将获得部分特权,并可能杀死特权进程。