gdb附加权限问题(ptrace_scope是只读的)

gdb附加权限问题(ptrace_scope是只读的)

当使用gdb附加到进程时。表明

无法附加到进程。如果您的 uid 与目标进程的 uid 匹配,请检查 /proc/sys/kernel/yama/ptrace_scope 的设置,或以 root 用户身份重试。有关更多详细信息,请参见 /etc/sysctl.d/10-ptrace.conf
ptrace:不允许操作。

作为 root,我使用echo 0 >/proc/sys/kernel/yama/ptrace_scope;然后它显示:

bash: /proc/sys/kernel/yama/ptrace_scope:只读文件系统

我该如何解决这个问题?的内容/etc/sysctl.d/10-ptrace.confkernel.yama.ptrace_scope = 0

答案1

在 docker 中,您现在可以使用该--privileged选项,请参阅https://docs.docker.com/engine/reference/commandline/exec/

docker exec --privileged -ti <container> bash

在特权模式下,gdb 无需对 ptrace_scope 进行任何修改即可运行。

答案2

要使用更细粒度的方法,cap_add也可以使用。对我有用的标志是SYS_PTRACE.这适用于 CLI 和 docker-compose 文件。对于 swarm,您至少需要有 Docker 20.10.0

相关内容