Para obter o PID pai do processo, portável (POSIXly), você pode usar:
ps -p "$PID" -o ppid=
ou (no Linux):
grep '^PPid' "/proc/$PID/status" |cut -f2
para mais formas, consulte link
Estou tentando escrever um script para ajudar na segurança do computador. Eu estou tentando procurar portas abertas, encontrar o PID e encontrar o que chamou.
Eu tenho isso funcionando, onde minha saída é algo como isto:
IPV4 - 1234 - 2566/nc
Running from: '/bin/nc.openbsd'
Command run: 'nc -l 1234'
Onde consegui obter esses valores de netstat
, /proc/$PID/exe
e /proc/$PID/cmdline
No entanto, na natureza de procurar backdoors, pode haver um script em meu computador em algum lugar, que chamaria nc
. É possível, a partir do PID de nc
, encontrar o local dos scripts originais? Eu tentei olhar para os outros arquivos em /proc/$PID/*
sem sucesso.
Digamos que em /etc/rc.local
coloquei a linha nc -l 1234
, poderia obter algo que me dissesse que o comando nc foi aberto por /etc/rc.local
?
Para obter o PID pai do processo, portável (POSIXly), você pode usar:
ps -p "$PID" -o ppid=
ou (no Linux):
grep '^PPid' "/proc/$PID/status" |cut -f2
para mais formas, consulte link
Acabei usando o seguinte:
grep -r "$command" $(ls -l /proc/$pid/cwd | awk '{ print $11 }') | awk -F: '{ print $1 }'
Onde $command="$(cat /proc/$pid/cmdline | sed 's\x0/ g' | sed 's/.$//')"
Que irá recursivamente percorrer os arquivos no diretório em que o script está localizado para localizar o arquivo que contém a linha de comando que executou o comando nc.
Parece um pouco confuso, então, se alguém puder ajudar a limpar um pouco isso seria ótimo:)
Obrigado pela ajuda pessoal!
Você pode usar o local de execução do pid usando o comando abaixo
ls -l /proc/PID_id/cwd
Tags process shell-script