Linux

確定正在執行的程序在哪個組中?

  • January 29, 2020

我正在嘗試確定正在執行的子程序繼承了哪些組。我想在給定其 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 都可以通過psfrom procps 獲得,這通常在基於 Linux 的系統上找到)。

group,rgroup並且supgrp 可用於將組 id 轉換為組名稱,但請注意,對於具有多個對應組名稱的組 id,只會顯示其中一個(與ls -lvsls -n或任何基於 id 處理使用者或組名稱的東西相同) )。

對於程序組 ID(用於終端作業控制):

ps -o pgid -p "$pid"

要將其儲存到變數中:

pgid=$(($(ps -o pgid= -p "$pid")))

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