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使自己无法倾倒。
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标志设置为零。