Linux

是什麼導致 /proc/<pid>/* 資源被 root 擁有,儘管 procs 是以普通使用者身份啟動的?

  • June 1, 2014

我注意到某些 proc,例如 bash,其全部/proc/&lt;pid&gt;/資源都可以被創建該 proc 的使用者讀取。然而,其他程序,例如 chrome 或 gnome-keyring-daemon,它們的大部分/proc/&lt;pid&gt;/資源只能由 root 訪問,儘管程序本身由普通使用者擁有並且沒有呼叫 suid。

我對核心進行了一些研究,發現如果任務缺少“可轉儲”標誌,則 /proc/ 內容會受到限制,但是我很難理解在什麼情況下任務變得不可轉儲(除了 setuid 情況,這不適用於 chrome 或 gnome-keyring):

https://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa0/fs/proc/base.c#L1532

有人願意幫助我了解潛在的機制及其原因嗎?

謝謝!

編輯:

找到了一個很好的文件,說明您為什麼不希望您的使用者可以轉儲您的 SSH 代理(例如gnome-keyring-daemon)。仍然不確定如何 gnome-keyring-daemon使自己不可轉儲。

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

Linux 有一個系統呼叫,它會改變dumpable標誌。這是我幾年前寫的一些範常式式碼:

#include &lt;sys/prctl.h&gt;
...
/* 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

引用自:https://unix.stackexchange.com/questions/133922