Determina em quais grupos o processo está em execução?

3

Eu tento determinar qual grupo (s) um processo filho em execução herdou. Eu quero encontrar todos os grupos que o processo está em seu uid. Existe uma maneira de determinar esse sistema de arquivos via / proc?

    
por Mandragor 17.05.2018 / 14:07

4 respostas

4

A lista de grupos é fornecida em Groups em /proc/ < pid > /status ; por exemplo,

$ grep '^Groups' /proc/$$/status
Groups: 4 24 27 30 46 110 115 116 1000

O grupo primário é fornecido em Gid :

$ grep '^Gid' /proc/$$/status
Gid:    1000    1000    1000    1000

ps também é capaz de mostrar os grupos de um processo, como as outras respostas indicam.

    
por 17.05.2018 / 14:13
5

Para o ID de grupo efetivo, id de grupo real e ids de grupo suplementares (como usado para controle de acesso):

ps -o gid,rgid,supgid -p "$pid"

gid e rgid são razoavelmente portáveis, supgid menos (todos os 3 estarão disponíveis com o ps do procps normalmente encontrado em sistemas baseados em Linux).

group , rgroup e supgrp podem ser usados para converter IDs de grupos em nomes de grupos, mas observe que para IDs de grupo que possuem vários nomes de grupos correspondentes, apenas um deles será mostrado (o mesmo que para ls -l vs ls -n ou qualquer coisa que lide com nomes de usuários ou grupos com base em ids).

Para o ID do grupo de processos (como usado no controle de trabalhos do terminal):

ps -o pgid -p "$pid"

Para armazená-lo em uma variável:

pgid=$(($(ps -o pgid= -p "$pid")))
    
por 17.05.2018 / 14:52
3

Usando ps :

$ ps -o group,supgrp $$
GROUP    SUPGRP
muru     adm,cdrom,sudo,dip,www-data,plugdev,lpadmin,mlocate,sambashare,lxd,libvirtd,docker,muru

Em man ps , as colunas de saída usadas para -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).
    
por 17.05.2018 / 14:52
-2

Em um sistema UNIX derivado do SVr4, você pode chamar:

pcred <prcess-id>

Note que o oficial procfs não é ASCII, mas sim binário.

    
por 17.05.2018 / 14:38