非特权终端如何能够向另一个用户通过 sudo 启动的进程发出中断信号?

非特权终端如何能够向另一个用户通过 sudo 启动的进程发出中断信号?

你自己看:

% sudo sleep 100 &
[1] 23272
% pkill sleep
pkill: killing pid 23275 failed: Operation not permitted
% fg
[1]  + running    sudo sleep 100
^C
%

终端如何能够终止sleep这里的特权进程?

我验证并确定了两件事:

  • 禁止向属于任何其他用户的进程发出信号,甚至是nobody.

    % sudo -u nobody sleep 100 &
    [1] 24321
    % pkill sleep
    pkill: killing pid 24324 failed: Operation not permitted
    

    我尝试过SIGTERMSIGKILLSIGINT没有一个被交付。

  • Ctrl+C 确实发送 SIGINT。

    % cat script.sh
    #!/bin/sh
    
    trap 'echo "SIGINT caught!"' SIGINT
    
    while true
    do
        sleep 1
    done
    % ./script.sh
    ^CSIGINT caught!
    

所以看起来我们这里确实存在矛盾。

相关内容