Меня интересует безопасность сигналов UNIX.
SIGKILL
убьет процесс. Итак, что происходит, когда процесс, не являющийся пользователем root, отправляет сигнал процессу пользователя root? Процесс все еще выполняет обработчик сигнала?
Я следую принятому ответу (gollum's) и печатаю man capabilites
, и я нахожу много вещей о ядре Linux. От 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
и SIGSTOP
...
SIGKILL
. Первоначально SIGINT
, SIGKILL
и SIGTERM
будет иметь точно такой же эффект, единственное отличие состоит в том, что процесс получения может изменить это значение по умолчанию для некоторых из них.
SIGKILL
, что является особым случаем и полностью управляется ядром, сигналы являются просто запросом. Процесс получения может делать с ними все, что угодно.