Могут ли два процесса подключаться к одному и тому же PID через ptrace

Итак, название говорит само за себя.

Возможно ли, что у одного процесса есть два трейсера?

Я играю с ptrace и вижу, что всякий раз, когда кто-то подключается к процессу, в / proc // status под TracerPID будет PID трассировщика. Однако возможно ли наличие двух трассировщиков?

У меня есть две программы (трассировщик и трассировщик). И я запустил tracee в режиме отладки, а затем я запустил tracer и получил ошибку Operation not permited (даже с правами root).

С уважением, голобич


person golobitch    schedule 02.10.2018    source источник


Ответы (1)


Они не могут. Это косвенно подтверждается на странице руководства ptrace:

   EPERM  The  specified  process cannot be traced.  This could be because
          the tracer has insufficient privileges (the required  capability
          is  CAP_SYS_PTRACE);  unprivileged  processes  cannot trace pro‐
          cesses that they cannot send signals to or  those  running  set-
          user-ID/set-group-ID  programs,  for  obvious reasons.  Alterna‐
          tively, the process may already be being traced, or (on  kernels
          before 2.6.26) be init(1) (PID 1).
person grungegurunge    schedule 02.10.2018
comment
Хороший. Спасибо. - person golobitch; 02.10.2018