ฉันสงสัยเกี่ยวกับความปลอดภัยของสัญญาณ UNIX
SIGKILL
จะฆ่ากระบวนการ ดังนั้นจะเกิดอะไรขึ้นเมื่อกระบวนการของผู้ใช้ที่ไม่ใช่รูทส่งสัญญาณไปยังกระบวนการของผู้ใช้รูท กระบวนการยังคงดำเนินการตัวจัดการสัญญาณหรือไม่?
ฉันทำตามคำตอบที่ยอมรับ (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
ซึ่งเป็นกรณีพิเศษและจัดการอย่างสมบูรณ์โดยเคอร์เนลสัญญาณเป็นเพียงการร้องขอ กระบวนการรับสามารถทำทุกอย่างที่พวกเขาต้องการได้