今天查资料时看到的,记录一下:
https://kb.kutu66.com/c++/post_10192094
某些应用程序使用 prctl() 来特别禁止 PTRACE_ATTACH ( 比如 。 在 Yama 中实现的更通用的解决方案是只允许从父进程直接向子进程( 例如 ) 发送 ptrace 。 直接 gdb 和 strace 仍然有效,或者作为 root 用户( 例如 ) 。 gdb BIN PID,strace -p PID 仍然可以作为 root 工作。 当本地应用程序危险时,攻击者无法附加到它的他进程,并检查它的内存和运行状态。
这种行为是通过 /proc/sys/kernel/yama/ptrace_scope sysctl值控制的。 默认为" 1"阻止非子 ptrace 调用。 一个" 0"恢复更为宽容的行为,这可能更适合开发系统和/或者只有管理帐户的服务器。 使用 sudo 也可以通过 CAP_SYS_PTRACE 功能临时授予 ptrace 权限,尽管这里方法允许任何进程的ptrace 。