我希望能够使用 gdb 附加到一个进程。进程有我的uid,但可执行文件是set-gid。所以,显然,我正在学习 PAM。我的理解是,任何附加到 set-gid 进程的进程都需要 CAP_SYS_PTRACE(或成为超级用户)。
以防万一有任何问题:
$ cat /proc/sys/kernel/yama/ptrace_scope
0
Run Code Online (Sandbox Code Playgroud)
按照pam_cap (8) 中的建议,我寻找/etc/security/capabilities.conf. 在不存在的 LTS 16 上,但目录存在,所以我创建了文件:
CAP_SYS_PTRACE jklowden
Run Code Online (Sandbox Code Playgroud)
我还将其附加到/etc/pam.d/common-auth:
# Cf. advice in pam_cap(8)
auth optional pam_cap.so
Run Code Online (Sandbox Code Playgroud)
然而,新登录不能附加到 set-gid 进程。
咆哮:sudo -g $gid -p $pid没有帮助。正如精美的手册所说,出于显而易见的原因,非特权进程无法跟踪无法向其发送信号的进程或运行 set-user-ID/set-group-ID 程序的进程 。 为什么我不能从同一组中的进程跟踪我拥有的进程实际上并不明显,仅仅因为该文件被标记为 set-group-ID。该策略鼓励以超级用户身份进行调试,这无疑不太安全。【结束吐槽】
非常感谢。