WINE@Etersoft/ptrace — различия между версиями

Материал из Русский WINE
Перейти к: навигация, поиск
(Создал страницу о W@E&ptrace)
 
 
Строка 1: Строка 1:
==Ptrace==
+
==Узнать значение параметра==
Системный вызов ptrace() позволяет указать какому процессу («трассировщику») можно наблюдать и контролировать выполнение другого процесса («трассируемого»), просматривать и изменять его память и регистры. Обычно, он используется для реализации отладочных точек прерывания и для отслеживания системных вызовов.
+
<code>$ /sbin/sysctl kernel.yama.ptrace_scope</code>
  
За блокировку ptrace отвечает параметр '''kernel.yama.ptrace_scope'''. Данный параметр хранится в файле /proc/sys/kernel/yama/ptrace_scope и появляется, в случае, если ядро было настроено с параметром CONFIG_SECURITY_YAMA
+
или
  
Возможные kernel.yama.ptrace_scope value:
+
<code>$ cat /proc/sys/kernel/yama/ptrace_scope</code>
  
'''0''' («обычные права ptrace») - Без дополнительных ограничений на операции, выполняющие проверки PTRACE_MODE_ATTACH (кроме накладываемых commoncap и другими LSM). Использование PTRACE_TRACEME не изменяется.
+
==ptrace и WINE@Etersoft==
 +
:Известно, что работе программ в WINE@Etersoft может мешать блокировка ptrace (ptrace-lock). Поэтому перед установкой и использованием ПО в WINE@Etersoft '''рекомендуется установить kernel.yama.ptrace_scope=0'''
  
'''1''' («ограниченный ptrace») - Когда выполняется операция, требующая проверки PTRACE_MODE_ATTACH, вызывающий процесс должен иметь мандат CAP_SYS_PTRACE в пользовательском пространстве имён процесса назначения или должен иметь предопределённые отношения с процессом назначения. По умолчанию, предопределённые отношения это когда процесс назначения должен быть потомком вызывающего.
+
===Установка параметра до конца сеанса===
 +
:<code># sysctl kernel.yama.ptrace_scope=0</code>
  
'''2''' («только администраторское присоединение») - Только процессы с мандатом CAP_SYS_PTRACE в пользовательском пространстве имён процесса назначения могут выполнять операции PTRACE_MODE_ATTACH или трассировать потомков, выполнивших PTRACE_TRACEME.
+
:(сбрасывается после перезагрузки)
  
'''3''' («присоединение заблокировано») - Никакие процессы не могут выполнять операции PTRACE_MODE_ATTACH или трассировать потомков, выполнивших PTRACE_TRACEME. После записи такого значения в файл, чтобы его изменить требуется перезагрузка.
+
===Установка параметра навсегда===
 +
:1) Найти файл .conf в <code>/etc/sysctl.d/</code>, который содержит данный параметр (может быть разным в зависимости от системы).
  
Значение, установленное по умолчанию зависит от системы.
+
::Чтобы найти нужный файл, можно воспользоваться командой
  
Чтобы узнать значение параметра: <code>$ /sbin/sysctl kernel.yama.ptrace_scope</code> или <code>$ cat /proc/sys/kernel/yama/ptrace_scope</code>
+
::<code>$ grep -R "kernel.yama.ptrace_scope" /etc/sysctl.d/</code>
  
==ptrace и WINE@Etersoft==
+
::'''В случае, если файл, задающий параметр не найден:'''
Известно, что работе программ в WINE@Etersoft может мешать блокировка prace (ptrace-lock). Поэтому перед установкой и использованием ПО в WINE@Etersoft '''рекомендуется установить kernel.yama.ptrace_scope=0'''
+
  
Чтобы сделать это для текущего сеанса (сбрасывается после перезагрузки), можно воспользоваться командой <code># sysctl kernel.yama.ptrace_scope=0</code>.
+
::Этот файл нужно создать командой:
  
Чтобы изменить этот параметр навсегда, нужно в /etc/sysctl.d/*.conf отредактировать его до вида '''kernel.yama.ptrace_scope=0''' и перезагрузить систему.
+
::<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. После записи такого значения в файл, чтобы его изменить требуется перезагрузка.

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

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

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