Ubuntu 22.04下调用PTRACE_TRACEME出现“Operation not permitted”错误的排查求助
Ubuntu 22.04下调用PTRACE_TRACEME出现“Operation not permitted”错误的排查求助
大家好,我最近在Ubuntu 22.04上尝试用PTRACE_TRACEME追踪子进程,写的代码片段如下:
if (ptrace(PTRACE_TRACEME, 0, NULL, NULL) == -1) { perror("ptrace_traceme"); exit(EXIT_FAILURE); }
但运行程序时一直抛出错误:
ptrace_traceme: Operation not permitted
我查了相关资料,知道这类错误大概率是系统安全限制导致的,所以已经做了这些排查尝试:
- 将内核参数
kernel.yama.ptrace_scope从默认的1修改为0 - 确认SELinux已经关闭
- 切换到root权限运行程序,但问题依然没有解决
现在我开始怀疑问题可能和安全特性无关了。另外我注意到strace似乎能绕过这个限制,看到有人用strace -f ./program_name的方式运行程序,但我没搞清楚具体原理,也不确定怎么把这个思路应用到自己的代码里。
有没有大佬能帮我分析下问题出在哪,或者给点解决方向呀?谢谢大家!
备注:内容来源于stack exchange,提问作者Aviel15
相关产品推荐
相关产品推荐

