ptrace (англ. process trace) — системний виклик в Unix та деяких Unix-подібних системах. Завдяки ньому певний процес може контролювати інший, надаючи можливості перевірки та управління внутрішнім станом своєї цілі. Зазвичай використовується налагоджувачами або іншими інструментами аналізу програм, та як допоміжний засіб в розробці програмного забезпечення.
Linux надає можливість заборони відстеження через ptrace. Процесу потрібно виконати системний виклик prctl
, що очистить прапор PR_SET_DUMPABLE
. В пізніх ядрах це запобігає некореневим процесам від використання ptrace. Наприклад, OpenSSH використовує цей механізм щоб запобігти перехопленню сесії ssh через ptrace. Пізні версії Ubuntu постачаються з ядром Linux, налаштованим на запобігання підключенню ptrace до процесів, відмінних від батьківського процесу відстежуваного. Це все ще дозволяє gdb і strace продовжувати працювати, але запобігає їх підключенню до непов'язаного запущеного процесу. Керування цією функцією здійснюється за допомогою параметра /proc/sys/kernel/yama/ptrace_scope
. У системах, де ввімкнено цю функцію, такі команди, як «gdb --attach
» і «strace -p
» не працюватимуть.
Починаючи з Ubuntu 10.10, ptrace можна викликати лише для дочірніх процесів.
В іншому мовному розділі є повніша стаття Ptrace(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою перекладу з англійської.
|