어느 그룹에 속하는지 확인하려고 합니다.달리기자식 프로세스가 상속되었습니다. 주어진 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의 경우 그 중 하나만 표시됩니다( ls -l
vs ls -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가 아니라 바이너리입니다.