Linux
/proc/pid/status 中的補充組來自哪裡,它們總是從 shell 繼承的嗎?
在 /proc/pid/status 中,我們可以看到 pid 的所有補充組(我的理解是假設它是從互動式 shell 派生的,或者程序執行了 getgroups(2))
我想知道這些組是如何提供給程序的。它們通常都是從父 shell 繼承的,我們應該假設父 shell 在某個時候做了 getgroups(或者從做了 getgroups 的登錄 shell 繼承了值)?
你的理解是正確的。組總是從父程序繼承(init 開始時沒有補充組)。改變這種情況的唯一方法是通過 setgroups。這是由 su、sshd 或任何為使用者執行登錄的特權程序完成的。到使用者的 shell 執行時,組已經設置好了。