Me pregunto sobre la seguridad de las señales UNIX.
SIGKILL
matará el proceso. Entonces, ¿qué sucede cuando el proceso de un usuario no root envía una señal al proceso de un usuario root? ¿El proceso todavía lleva a cabo el controlador de señal?
Sigo la respuesta aceptada (de gollum), escribo man capabilites
y encuentro muchas cosas sobre el kernel de 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
y SIGSTOP
...
SIGKILL
. Inicialmente SIGINT
, SIGKILL
y SIGTERM
tendrá exactamente el mismo efecto, la única diferencia es que el proceso de recepción puede cambiar este valor predeterminado para algunos de ellos.
SIGKILL
, que es un caso especial y administrado completamente por el núcleo, las señales son simplemente una solicitud. El proceso de recepción puede hacer lo que quieran con ellos.