WINE@Etersoft/ptrace

Материал из Русский WINE
Перейти к: навигация, поиск

Ptrace

Системный вызов ptrace() позволяет указать какому процессу («трассировщику») можно наблюдать и контролировать выполнение другого процесса («трассируемого»), просматривать и изменять его память и регистры. Обычно, он используется для реализации отладочных точек прерывания и для отслеживания системных вызовов.

За блокировку ptrace отвечает параметр kernel.yama.ptrace_scope. Данный параметр хранится в файле /proc/sys/kernel/yama/ptrace_scope и появляется, в случае, если ядро было настроено с параметром CONFIG_SECURITY_YAMA

Возможные kernel.yama.ptrace_scope value:

0 («обычные права ptrace») - Без дополнительных ограничений на операции, выполняющие проверки PTRACE_MODE_ATTACH (кроме накладываемых commoncap и другими LSM). Использование PTRACE_TRACEME не изменяется.

1 («ограниченный ptrace») - Когда выполняется операция, требующая проверки PTRACE_MODE_ATTACH, вызывающий процесс должен иметь мандат CAP_SYS_PTRACE в пользовательском пространстве имён процесса назначения или должен иметь предопределённые отношения с процессом назначения. По умолчанию, предопределённые отношения это когда процесс назначения должен быть потомком вызывающего.

2 («только администраторское присоединение») - Только процессы с мандатом CAP_SYS_PTRACE в пользовательском пространстве имён процесса назначения могут выполнять операции PTRACE_MODE_ATTACH или трассировать потомков, выполнивших PTRACE_TRACEME.

3 («присоединение заблокировано») - Никакие процессы не могут выполнять операции PTRACE_MODE_ATTACH или трассировать потомков, выполнивших PTRACE_TRACEME. После записи такого значения в файл, чтобы его изменить требуется перезагрузка.

Значение, установленное по умолчанию зависит от системы.

Чтобы узнать значение параметра: $ /sbin/sysctl kernel.yama.ptrace_scope или $ cat /proc/sys/kernel/yama/ptrace_scope

ptrace и WINE@Etersoft

Известно, что работе программ в WINE@Etersoft может мешать блокировка prace (ptrace-lock). Поэтому перед установкой и использованием ПО в WINE@Etersoft рекомендуется установить kernel.yama.ptrace_scope=0

Чтобы сделать это для текущего сеанса (сбрасывается после перезагрузки), можно воспользоваться командой # sysctl kernel.yama.ptrace_scope=0.

Чтобы изменить этот параметр навсегда, нужно в /etc/sysctl.d/*.conf отредактировать его до вида kernel.yama.ptrace_scope=0 и перезагрузить систему.

ptrace-lock в Astra Linux

На системах Astra Linux существуют инструменты командной строки astra-safepolicy. Один из них - astra-ptrace-lock - блокирует ptrace в состоянии "АКТИВНО".

Чтобы выключить блокировку и использовать WINE@Etersoft, следует выполнить # astra-ptrace-lock disable

Полезные ссылки

ptrace(2) sysctl.d(5) sysctl(8) sysctl.conf(5)