Я вошел в систему как root, но
strace
дает мне это:root @ kyznecov-System: / home / kyznecov # ps -e | grep 111 3807 баллов / 2 00:00:00 111 3810 баллов / 2 00:00:00 111 root @ kyznecov-System: / home / kyznecov # strace -p 3810 attach: ptrace (PTRACE_ATTACH, ...): операция не разрешена Не удалось подключиться к процессу. Если ваш идентификатор совпадает с идентификатором цели обработайте, проверьте настройку / proc / sys / kernel / yama / ptrace_scope или попробуйте снова как пользователь root. Для получения дополнительной информации см. /Etc/sysctl.d/10-ptrace.conf корень @ kyznecov-системы: / Главная / kyznecov root @ kyznecov-System: / home / kyznecov # cat / proc / sys / kernel / yama / ptrace_scope 0
Затем я попытался использовать
gdb
для отладки многопроцессную программу в Eclipse CDT с разветвлением, и это дало мне тот же результат / ошибку:
Любые идеи?
strace /bin/echo test
? Это дает то же самое сообщение об ошибке?Ответы:
Одна из причин, чтобы получить ошибку:
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
потому что процесс уже был связан с
gdb
,strace
или подобным. Чтобы проверить, так ли это, запустите:grep TracerPid /proc/$THE_PID/status
Если он ненулевой, это pid существующей программы, которая уже выполняет трассировку для этого процесса.
источник
Как прокомментировал izx , это может произойти только из-за ошибки в ядре. Поэтому любому, кто может создать эту проблему в настоящее время, включая, в частности, оригинальный постер этого вопроса, было бы разумно сообщить о ней как об ошибке , внимательно и внимательно прочитав эту страницу, а затем запустив ее
ubuntu-bug linux
на зараженном компьютере . Об этом следует сообщатьlinux
в Ubuntu, а не против основного (восходящего) ядра, если только вы не можете создать его на основном ядре (вы должны были быyama
загрузить).Ожидаемое поведение в каждой версии Ubuntu, начиная с Ubuntu 10.10, заключается в том, что процесс A не может отследить запущенный процесс B, если B не является прямым потомком A (или A запускается как
root
). Это улучшение безопасности, благодаря которому процесс, скомпрометированный злоумышленником, не может использовать средства отладки, предоставляемые ядром, для обнаружения информации из других процессов. Это объясняется в разделе « Область действия ptrace» вики-страницы сообщества «Функции безопасности» .Это ограничительное поведение используется по умолчанию, но его можно изменить, чтобы процесс A мог отслеживать любой запущенный процесс B, запущенный с тем же идентификатором пользователя, что и у процесса A. То есть вы можете настроить свою систему так, чтобы любой из ваших процессов мог отлаживать друг друга. Это упрощает подключение отладчиков к уже запущенным процессам.
Настройка для этого выставляется в
/proc/sys/kernel/yama/ptrace_scope
sysctl .1
обозначает более ограничительное поведение и0
менее ограничительное поведение. Настройки можно прочитать с помощью:Менее ограничительное (не по умолчанию) поведение может быть установлено с помощью:
И более ограничительное (по умолчанию) поведение может быть установлено (или установлено обратно) с помощью:
Мало того, что первоначальный постер этого вопроса не смог прикрепить
strace
экземпляр к запущенному в данный момент процессу сptrace-scope
установленным значением0
, но оригинальный постер все еще не мог сделать это при запускеstrace
какroot
. Трудно понять, как это может быть что-то кроме ошибки - я настоятельно рекомендую сообщать об этом как об одном.Сначала я подумал, что смог воспроизвести проблему, когда
ptrace_scope
параметр0
игнорируется и обрабатывается так, как если бы он был1
. Но я больше не верю, что это так, потому что я снова сделал все то же самое, и я не могу воспроизвести проблему. Я проверил это на:На всех трех машинах происходит ожидаемое поведение, и я не могу воспроизвести условие, о котором спрашивает оригинальный автор этого вопроса. Вот некоторый текст из Терминала (из точной живой системы):
strace
продолжал производить сообщения, пока я не приостановил это, как ожидалось.В заключение я рекомендую снова сообщить об этом как об ошибке. Максимально инклюзивный поиск по тексту https://bugs.launchpad.net (который включает в себя все обнаруженные ошибки в Ubuntu)
ptrace_scope
позволяет получить лишь несколько результатов, в которых явно нет отчетов об этой ошибке . Сообщение об ошибке поможет другим, может привести к обходным путям или исправлению и, вероятно, является единственным значимым способом продвинуться вперед в работе над этой проблемой (при условии, что проблема все еще возникает).источник