Linux
是什麼導致 /proc/<pid>/* 資源被 root 擁有,儘管 procs 是以普通使用者身份啟動的?
我注意到某些 proc,例如 bash,其全部
/proc/<pid>/
資源都可以被創建該 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
有人願意幫助我了解潛在的機制及其原因嗎?
謝謝!
編輯:
找到了一個很好的文件,說明您為什麼不希望您的使用者可以轉儲您的 SSH 代理(例如
gnome-keyring-daemon
)。仍然不確定如何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);
出於安全原因,可能是
gnome-keyring-daemon
故意將標誌設置為零。dumpable