WINE@Etersoft/ptrace — различия между версиями
Iviv (обсуждение | вклад) (Создал страницу о W@E&ptrace) |
Iviv (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | == | + | ==Узнать значение параметра== |
− | + | <code>$ /sbin/sysctl kernel.yama.ptrace_scope</code> | |
− | + | или | |
− | + | <code>$ cat /proc/sys/kernel/yama/ptrace_scope</code> | |
− | '''0''' | + | ==ptrace и WINE@Etersoft== |
+ | :Известно, что работе программ в WINE@Etersoft может мешать блокировка ptrace (ptrace-lock). Поэтому перед установкой и использованием ПО в WINE@Etersoft '''рекомендуется установить kernel.yama.ptrace_scope=0''' | ||
− | + | ===Установка параметра до конца сеанса=== | |
+ | :<code># sysctl kernel.yama.ptrace_scope=0</code> | ||
− | + | :(сбрасывается после перезагрузки) | |
− | + | ===Установка параметра навсегда=== | |
+ | :1) Найти файл .conf в <code>/etc/sysctl.d/</code>, который содержит данный параметр (может быть разным в зависимости от системы). | ||
− | + | ::Чтобы найти нужный файл, можно воспользоваться командой | |
− | + | ::<code>$ grep -R "kernel.yama.ptrace_scope" /etc/sysctl.d/</code> | |
− | + | ::'''В случае, если файл, задающий параметр не найден:''' | |
− | + | ||
− | + | ::Этот файл нужно создать командой: | |
− | + | ::<code># touch /etc/sysctl.d/999-disable-ptrace.conf</code> | |
− | ===ptrace-lock в Astra Linux=== | + | :2) Отредактировать (добавить в случае отсутствия) параметр до вида '''kernel.yama.ptrace_scope=0''' (понадобятся права root). |
+ | |||
+ | :3) Перезагрузить систему. | ||
+ | |||
+ | |||
+ | Пример: | ||
+ | <blockquote> | ||
+ | В системе OSnova 2.9 настройка происходит в файле <code>/etc/sysctl.d/30-disable-ptrace.conf</code> | ||
+ | |||
+ | В этом файле нужно сменить значение параметра на желаемое и сохранить. Затем перезагрузить систему. | ||
+ | |||
+ | После перезагрузки <code>kernel.yama.ptrace_scope</code> будет иметь значение из этого файла. | ||
+ | </blockquote> | ||
+ | ===astra-ptrace-lock в Astra Linux=== | ||
На системах Astra Linux существуют инструменты командной строки astra-safepolicy. Один из них - astra-ptrace-lock - блокирует ptrace в состоянии "АКТИВНО". | На системах Astra Linux существуют инструменты командной строки astra-safepolicy. Один из них - astra-ptrace-lock - блокирует ptrace в состоянии "АКТИВНО". | ||
Чтобы выключить блокировку и использовать WINE@Etersoft, следует выполнить <code># astra-ptrace-lock disable</code> | Чтобы выключить блокировку и использовать WINE@Etersoft, следует выполнить <code># astra-ptrace-lock disable</code> | ||
+ | |||
+ | |||
+ | ==Ptrace== | ||
+ | Системный вызов ptrace() позволяет указать какому процессу («трассировщику») можно наблюдать и контролировать выполнение другого процесса («трассируемого»), просматривать и изменять его память и регистры. Обычно, он используется для реализации отладочных точек прерывания и для отслеживания системных вызовов. | ||
+ | |||
+ | За блокировку ptrace отвечает параметр '''kernel.yama.ptrace_scope'''. Данный параметр хранится в файле /proc/sys/kernel/yama/ptrace_scope и появляется, в случае, если ядро было настроено с параметром CONFIG_SECURITY_YAMA | ||
+ | |||
+ | Возможные значения kernel.yama.ptrace_scope: | ||
+ | |||
+ | '''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. После записи такого значения в файл, чтобы его изменить требуется перезагрузка. | ||
+ | |||
+ | Значение, установленное по умолчанию зависит от системы. | ||
==Полезные ссылки== | ==Полезные ссылки== |
Текущая версия на 16:47, 23 июля 2024
Содержание
[убрать]Узнать значение параметра
$ /sbin/sysctl kernel.yama.ptrace_scope
или
$ cat /proc/sys/kernel/yama/ptrace_scope
ptrace и WINE@Etersoft
- Известно, что работе программ в WINE@Etersoft может мешать блокировка ptrace (ptrace-lock). Поэтому перед установкой и использованием ПО в WINE@Etersoft рекомендуется установить kernel.yama.ptrace_scope=0
Установка параметра до конца сеанса
# sysctl kernel.yama.ptrace_scope=0
- (сбрасывается после перезагрузки)
Установка параметра навсегда
- 1) Найти файл .conf в
/etc/sysctl.d/
, который содержит данный параметр (может быть разным в зависимости от системы).
- Чтобы найти нужный файл, можно воспользоваться командой
$ grep -R "kernel.yama.ptrace_scope" /etc/sysctl.d/
- В случае, если файл, задающий параметр не найден:
- Этот файл нужно создать командой:
# touch /etc/sysctl.d/999-disable-ptrace.conf
- 2) Отредактировать (добавить в случае отсутствия) параметр до вида kernel.yama.ptrace_scope=0 (понадобятся права root).
- 3) Перезагрузить систему.
Пример:
В системе OSnova 2.9 настройка происходит в файле
/etc/sysctl.d/30-disable-ptrace.conf
В этом файле нужно сменить значение параметра на желаемое и сохранить. Затем перезагрузить систему.
После перезагрузки
kernel.yama.ptrace_scope
будет иметь значение из этого файла.
astra-ptrace-lock в Astra Linux
На системах Astra Linux существуют инструменты командной строки astra-safepolicy. Один из них - astra-ptrace-lock - блокирует ptrace в состоянии "АКТИВНО".
Чтобы выключить блокировку и использовать WINE@Etersoft, следует выполнить # astra-ptrace-lock disable
Ptrace
Системный вызов ptrace() позволяет указать какому процессу («трассировщику») можно наблюдать и контролировать выполнение другого процесса («трассируемого»), просматривать и изменять его память и регистры. Обычно, он используется для реализации отладочных точек прерывания и для отслеживания системных вызовов.
За блокировку ptrace отвечает параметр kernel.yama.ptrace_scope. Данный параметр хранится в файле /proc/sys/kernel/yama/ptrace_scope и появляется, в случае, если ядро было настроено с параметром CONFIG_SECURITY_YAMA
Возможные значения kernel.yama.ptrace_scope:
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. После записи такого значения в файл, чтобы его изменить требуется перезагрузка.
Значение, установленное по умолчанию зависит от системы.