尽管 procs 是以普通用户身份启动的,但什么原因导致 /proc/<pid>/* 资源被 root 拥有?

ali*_*nth 7 linux process kernel proc

我注意到某些/proc/<pid>/proc ,例如 bash,其全部资源都可以由创建该 proc 的用户读取。然而,其他 proc,例如 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使自己无法倾倒。

https://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa0/Documentation/security/Yama.txt#L30

kas*_*erd 7

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);
Run Code Online (Sandbox Code Playgroud)

可能是出于安全原因gnome-keyring-daemon故意将dumpable标志设置为零。