我注意到某些过程(例如 bash)的整个/proc/<pid>/
资源可供创建该过程的用户读取。然而,其他进程(例如 chrome 或 gnome-keyring-daemon)的大部分/proc/<pid>/
资源只能由 root 访问,尽管进程本身由普通用户拥有并且没有调用 suid。
我深入研究了内核,发现如果任务缺少“可转储”标志,/proc/ 内容就会受到限制,但是我很难理解在什么情况下任务变得不可转储(除了 setuid 情况,这不适用于 chrome 或 gnome-keyring):
https://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa0/fs/proc/base.c#L1532
有人愿意帮助我了解其基本机制及其原因吗?
谢谢!
编辑:
找到了一个很好的文档,说明了为什么您不希望gnome-keyring-daemon
用户可以转储 SSH 代理(例如 )。仍不确定如何 gnome-keyring-daemon
使自己变得不可倾倒。
答案1
Linux有一个系统调用,它会改变dumpable
标志。这是一些示例代码,其中我写几年前:
#include <sys/prctl.h>
...
/* The last three arguments are just padding, because the
* system call requires five arguments.
*/
prctl(PR_SET_DUMPABLE,1,42,42,42);
出于安全原因,可能gnome-keyring-daemon
故意将标志设置dumpable
为零。