Me conecté como root pero
strace
me da esto:root @ kyznecov-System: / home / kyznecov # ps -e | grep 111 3807 pts / 2 00:00:00 111 3810 pts / 2 00:00:00 111 root @ kyznecov-System: / home / kyznecov # strace -p 3810 adjuntar: ptrace (PTRACE_ATTACH, ...): Operación no permitida No se pudo adjuntar al proceso. Si su uid coincide con el uid del objetivo proceso, verifique la configuración de / proc / sys / kernel / yama / ptrace_scope, o intente de nuevo como usuario root. Para más detalles, vea /etc/sysctl.d/10-ptrace.conf root @ kyznecov-System: / inicio / kyznecov root @ kyznecov-System: / home / kyznecov # cat / proc / sys / kernel / yama / ptrace_scope 0 0
Luego intenté usar
gdb
para depurar un programa multiproceso en Eclipse CDT con bifurcación, y me dio el mismo resultado / error:
¿Algunas ideas?
strace /bin/echo test
? ¿Eso da el mismo mensaje de error?Respuestas:
Una razón para obtener el error:
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
es porque el proceso ya se ha unido a con
gdb
,strace
o similar. Para verificar si este es el caso, ejecute:grep TracerPid /proc/$THE_PID/status
Si no es cero, ese es el pid de un programa existente que ya está ejecutando un seguimiento en ese proceso.
fuente
Como izx ha comentado, esto solo debería poder suceder debido a un error del kernel. Por lo tanto, cualquier persona que pueda producir este problema, incluido, y especialmente el póster original de esta pregunta, sería aconsejable informarlo como un error al leer esa página minuciosa y cuidadosamente, y luego ejecutarla
ubuntu-bug linux
en la máquina afectada . Esto debería informarselinux
en Ubuntu, y no en un núcleo de línea principal (ascendente), a menos que pueda producirlo en un núcleo de línea principal (debería haberyama
cargado).El comportamiento esperado en cada versión de Ubuntu que comienza con Ubuntu 10.10 es que el proceso A no puede rastrear un proceso en ejecución B a menos que B sea un hijo directo de A (o A se ejecuta como
root
). Esta es una mejora de seguridad, lo que hace que un proceso que ha sido comprometido por un atacante no pueda usar las funciones de depuración proporcionadas por el núcleo para descubrir información de otros procesos. Esto se explica en la sección de alcance de ptrace de la página wiki de la comunidad de Características de seguridad .Este comportamiento restrictivo es el predeterminado, pero se puede cambiar para permitir que un proceso A rastree cualquier proceso B en ejecución que se ejecute con el mismo ID de usuario que el propio proceso A. Es decir, puede configurar su sistema para permitir que cualquiera de sus procesos se depure entre sí. Esto simplifica la conexión de depuradores a procesos que ya se están ejecutando.
La configuración para esto está expuesta por el
/proc/sys/kernel/yama/ptrace_scope
sysctl .1
denota el comportamiento más restrictivo y0
el comportamiento menos restrictivo. La configuración se puede leer con:El comportamiento menos restrictivo (no predeterminado) se puede establecer con:
Y el comportamiento más restrictivo (predeterminado) se puede establecer (o retrasar) con:
No solo el póster original de esta pregunta no pudo adjuntar una
strace
instancia a un proceso actualmente en ejecución conptrace-scope
set to0
, sino que el póster original aún no pudo hacerlo cuando se ejecutóstrace
comoroot
. Es difícil ver cómo esto podría ser algo más que un error: recomiendo informarlo como tal.Al principio, pensé que podía reproducir el problema donde una
ptrace_scope
configuración de0
se ignora y se trata como si lo fuera1
. Pero ya no creo que este sea el caso, ya que he vuelto a hacer lo mismo y no puedo reproducir el problema. He probado esto en:En las tres máquinas, se produce el comportamiento esperado y no puedo reproducir la condición sobre la que pregunta el póster original de esta pregunta. Aquí hay un texto de la Terminal (del sistema en vivo Precise):
strace
Seguí produciendo mensajes hasta que lo suspendí, como era de esperar.Concluyo recomendando nuevamente informar esto como un error. Una búsqueda máximamente inclusiva en https://bugs.launchpad.net (que incluye cualquier error de Ubuntu reportado) para el texto
ptrace_scope
produce solo un puñado de resultados, en los que claramente ninguno es un informe de este error . Informar el error ayudaría a otros, puede dar lugar a soluciones o una solución, y es probablemente la única forma significativa de avanzar en el trabajo de este problema (suponiendo que el problema aún esté ocurriendo).fuente