Eu estou pensando sobre a segurança dos sinais UNIX.
SIGKILL
vai matar o processo. Então, o que acontece quando o processo de um usuário não root envia um sinal para o processo de um usuário root? O processo ainda executa o manipulador de sinal?
Sigo a resposta aceita (gollum's), digito man capabilites
e encontro muitas coisas sobre o kernel do Linux. De man capabilities
:
NAME
capabilities - overview of Linux capabilities
DESCRIPTION
For the purpose of performing permission checks, traditional UNIX
implementations distinguish two categories of processes: privileged
processes (whose effective user ID is 0, referred to as superuser or
root), and unprivileged processes (whose effective UID is nonzero).
Privileged processes bypass all kernel permission checks, while
unprivileged processes are subject to full permission checking based
on the process's credentials (usually: effective UID, effective GID,
and supplementary group list).
Starting with kernel 2.2, Linux divides the privileges traditionally
associated with superuser into distinct units, known as capabilities,
which can be independently enabled and disabled. Capabilities are a
per-thread attribute.
SIGKILL
e SIGSTOP
...
SIGKILL
faria. Inicialmente SIGINT
, SIGKILL
e SIGTERM
terá exatamente o mesmo efeito, a única diferença é que o processo de recebimento pode alterar esse padrão para alguns deles.
SIGKILL
, que é um caso especial e gerenciado completamente pelo kernel, os sinais são apenas uma solicitação. O processo de recebimento pode fazer o que eles quiserem com eles.