권한이 없는 터미널이 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
    

    시도해 보았지만 SIGTERM그 중 어느 것도 배달되지 않았습니다 SIGKILL.SIGINT

  • Ctrl+C는 SIGINT를 보냅니다.

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

그래서 여기에 모순이 있는 것 같습니다.

관련 정보