Mi chiedo la sicurezza dei segnali UNIX.
SIGKILL
ucciderà il processo. Quindi, cosa succede quando il processo di un utente non root invia un segnale al processo di un utente root? Il processo esegue ancora il gestore del segnale?
Seguo la risposta accettata (di Gollum) e scrivo man capabilites
e trovo molte cose sul kernel di Linux. Da 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
. Inizialmente SIGINT
, SIGKILL
e SIGTERM
avrà esattamente lo stesso effetto, l'unica differenza è che il processo di ricezione può modificare questo valore predefinito per alcuni di essi.
SIGKILL
, che è un caso speciale e gestito completamente dal kernel, i segnali sono semplicemente una richiesta. Il processo di ricezione può fare tutto ciò che vogliono con loro.