Linux
確定正在執行的程序在哪個組中?
我正在嘗試確定正在執行的子程序繼承了哪些組。我想在給定其 uid 的情況下找到該程序所在的所有組。有沒有辦法通過
/proc
文件系統確定這一點?
組列表
Groups
在/proc/
<pid>中給出/status
;例如,$ grep '^Groups' /proc/$$/status Groups: 4 24 27 30 46 110 115 116 1000
主要組如下
Gid
:$ grep '^Gid' /proc/$$/status Gid: 1000 1000 1000 1000
ps
正如其他答案所示,還能夠顯示程序的組。
對於有效組 id、真實組 id 和補充組 id(用於訪問控制):
ps -o gid,rgid,supgid -p "$pid"
gid
並且rgid
相當便攜,supgid
但不太便攜(所有 3 都可以通過ps
from procps 獲得,這通常在基於 Linux 的系統上找到)。
group
,rgroup
並且supgrp
可用於將組 id 轉換為組名稱,但請注意,對於具有多個對應組名稱的組 id,只會顯示其中一個(與ls -l
vsls -n
或任何基於 id 處理使用者或組名稱的東西相同) )。對於程序組 ID(用於終端作業控制):
ps -o pgid -p "$pid"
要將其儲存到變數中:
pgid=$(($(ps -o pgid= -p "$pid")))