UNIXシグナルのセキュリティについて疑問に思っています。
SIGKILL
プロセスを強制終了します。では、非rootユーザーのプロセスがrootユーザーのプロセスにシグナルを送信するとどうなりますか?プロセスはまだシグナルハンドラを実行しますか?
私は受け入れられた答え(ゴラム)に従い、タイプします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
特殊なケースで、カーネルによって完全に管理され、信号は単に要求されています。受信プロセスは、彼らが望むあらゆることをすることができます。