Por que o pgrep não mostraria meus processos, mas o sudo pgrep faz isso?

5

Eu olhei para uma lista de processos e filtrou ssh-agent , que mostra corretamente os 3 processos que eu esperava:

$ ps -ef | grep ssh-agent
belmin   1051     1  0 16:05 ?        00:00:00 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
belmin   2569     1  0 16:09 ?        00:00:00 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
belmin   2655     1  0 16:09 ?        00:00:00 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
belmin   5093  2596  0 16:17 pts/1    00:00:00 grep --color ssh-agent

No entanto, se eu executar um pgrep , ele não listará os 3 processos, a menos que eu aumente para sudo :

$ pgrep -a ssh-agent

$ sudo !!
sudo pgrep -a ssh-agent
1051 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
2569 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
2655 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple

Inicialmente, achei que era porque o PPID é 1. No entanto, isso não é um problema com outros processos que têm o PPID como 1, então não é isso.

O que estou perdendo aqui?

Atualização:

Portanto, aparentemente, aplicar argumento de namespace ( --ns ) funciona sem sudo --- independentemente do namespace que eu forneço:

$ for n in 'ipc' 'mnt' 'net' 'pid' 'user' 'uts'; do echo pgrep -a --ns $n ssh-agent; pgrep -a --ns $n ssh-agent; done
    pgrep -a --ns ipc ssh-agent
    12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
    pgrep -a --ns mnt ssh-agent
    12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
    pgrep -a --ns net ssh-agent
    12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
    pgrep -a --ns pid ssh-agent
    12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
    pgrep -a --ns user ssh-agent
    12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
    pgrep -a --ns uts ssh-agent
    12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple

Ainda não está claro por que. Vou continuar cavando.

    
por Belmin Fernandez 18.04.2018 / 23:07

2 respostas

2

O Procps 3.3.13 tinha o filtro pgrep nos namespaces. Principalmente, então pkill não mata fora do espaço de nomes. No entanto, para alguns processos, especialmente em torno do SSH por algum motivo, ele gera resultados estranhos.

3.3.14 tem essa alteração revertida.

    
por 19.04.2018 / 14:32
2

Você pode ter o sistema de arquivos /proc montado com a opção hidepid set. Este é um recurso de segurança para proteger informações de outros usuários no sistema. Veja a página man para proc para informações completas. Você pode verificar se esse é o caso executando grep proc /etc/mtab e vendo se o resultado inclui hidepid=2 . Você pode alterar a configuração modificando o arquivo /etc/fstab .

    
por 19.04.2018 / 01:08