どのグループに属しているかを確認します。走る子プロセスが継承されました。与えられたuidに基づいて、このプロセスが属するすべてのグループを見つけたいと思います。/proc
ファイルシステムでこれを確認する方法はありますか?
答え1
有効グループID、実グループID、補助グループID(アクセス制御用)の場合:
ps -o gid,rgid,supgid -p "$pid"
gid
そしてrgid
かなり移植性supgid
がありますが、移植性はあまり良くありません(3つすべて一般的ps
にLinuxベースのシステムで見つかったprocpsを介して使用できます)。
group
、グループIDをグループ名に変換するためにrgroup
使用supgrp
できますが、複数のグループ名を持つグループIDの場合は、そのうちの1つのみが表示されます(ls -l
vsls -n
またはIDに基づいてユーザーまたはグループ名を処理するすべてのエントリと同じ)。 。
プロセスグループIDの場合(ターミナルジョブ制御に使用されます):
ps -o pgid -p "$pid"
変数に保存するには:
pgid=$(($(ps -o pgid= -p "$pid")))
答え2
グループのリストは<pid>Groups
に表示されます。/proc/
/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
他の答えが示すように、プロセスグループを表示する機能もあります。
答え3
使用ps
:
$ ps -o group,supgrp $$
GROUP SUPGRP
muru adm,cdrom,sudo,dip,www-data,plugdev,lpadmin,mlocate,sambashare,lxd,libvirtd,docker,muru
~からman ps
、出力列は次の目的で使用されます-o
。
egid EGID effective group ID number of the process as a
decimal integer. (alias gid).
egroup EGROUP effective group ID of the process. This will be
the textual group ID, if it can be obtained and
the field width permits, or a decimal
representation otherwise. (alias group).
gid GID see egid. (alias egid).
group GROUP see egroup. (alias egroup).
supgid SUPGID group ids of supplementary groups, if any. See
getgroups(2).
supgrp SUPGRP group names of supplementary groups, if any. See
getgroups(2).
答え4
SVr4から派生したUNIXシステムでは、以下を呼び出すことができます。
pcred <prcess-id>
公式版はprocfs
ASCIIではなくバイナリです。