หากคุณให้สิทธิ์ root แก่ผู้ใช้ฟรี ผู้ใช้นั้นสามารถฆ่าเกือบทุกอย่างได้ สำหรับการสนทนาเชิงลึกและวิธีแก้ไขที่เป็นไปได้ โปรดดู: การสนทนา sigkill ของสแต็กยูนิกซ์.
โซลูชัน watchdog ที่กล่าวถึงโดย @bta ก็น่าสนใจเช่นกัน ในความเป็นจริงมีแพ็คเกจซอฟต์แวร์เฝ้าระวังที่สามารถกำหนดค่าให้ตรวจสอบการเปลี่ยนแปลงของไฟล์หรือเรียกใช้สคริปต์ผู้ใช้ อย่างไรก็ตามในเคอร์เนลมาตรฐานส่วนใหญ่ watchdog นี้สามารถหยุดได้โดยผู้ใช้ root หรือคุณสามารถเปลี่ยนการกำหนดค่าได้ แต่ผู้ใช้รายอื่นจะต้องตระหนักถึงสิ่งนี้เพื่อหลีกเลี่ยง ดู: https://linux.die.net/man/8/watchdog
แต่ถ้าคุณไม่ต้องอนุญาตการเข้าถึงรูทแบบเต็ม แต่สามารถจัดการการเข้าถึงด้วยกลไก sudo คุณสามารถตั้งค่าคำสั่งบางคำสั่งพร้อมอาร์กิวเมนต์ที่ชัดเจนเพื่อให้ดำเนินการและไม่อนุญาตสิ่งอื่นใดนอกเหนือจากสิทธิ์ผู้ใช้เริ่มต้น
ตัวอย่างเช่นคุณสามารถใส่ /bin/คิล
ใน /etc/sudoers
ไฟล์ แต่อนุญาตเฉพาะอาร์กิวเมนต์ที่ระบุเท่านั้น
บ๊อบ ALL=(root) /bin/kill -sigTERM [1-9][0-9][0-9][0-9]
สิ่งนี้จะช่วยให้ผู้ใช้ บ๊อบ เพื่อดำเนินการ /bin/คิล
แต่จะฆ่าเฉพาะกระบวนการที่มี PID ระหว่าง 1,000 ถึง 9999 เท่านั้น หากคุณเรียกใช้จอภาพของคุณเร็วพอ มันจะมี PID ต่ำและไม่สามารถฆ่าด้วยวิธีนี้ได้ ผู้ใช้ บ๊อบ ยังสามารถรบกวนคุณโดยการฆ่ากระบวนการผู้ใช้ของคุณเองแน่นอน .... และการห่อ PID นี้อาจไม่มีประโยชน์มากนัก
เป็นไปได้ที่จะลบตัวเลือกบางอย่างออกจากชุดทั้งหมด ตัวอย่างเช่น ฆ่า PID ที่ไม่ใช่ค่าลบทั้งหมด แต่ไม่อนุญาตให้ส่งสัญญาณ PID ที่มี 1337 และไม่อนุญาตให้มีการฆ่า -1
bob ALL=(root) /bin/kill -sigTERM *,!/bin/kill *1337*,!bin/kill *-1*
แต่นั่นอาจเป็นเรื่องที่น่าอึดอัดใจเล็กน้อย และคุณจะต้องแน่ใจว่าโปรแกรมไม่ได้ปิด ints ไว้ Procps kill ไม่ไกลเท่าที่ฉันเห็น แต่ตัวอย่างนี้ยังคงอนุญาตให้ฆ่ากระบวนการด้วย pid 1337 หากเป็นส่วนหนึ่งของกลุ่มกระบวนการที่ไม่ได้เป็นผู้นำ นี่แสดงให้เห็นว่าการทำงานกับฟิล์มเนกาทีฟหรือแบล็กลิสต์นั้นยากเพียงใด
ตัวเลือกที่ดีกว่า อนุญาตให้ฆ่ากระบวนการบางอย่างตามชื่อเท่านั้น
bob ALL=(root) /usr/bin/pkill -sigTERM -f กระบวนการที่ตั้งชื่อ
หรือเริ่มบริการเฉพาะใหม่เท่านั้น
bob ALL=(รูท) /bin/systemctl รีสตาร์ท a-service
ผู้ใช้สามารถดูคำสั่ง sudo ที่มีได้ด้วย sudo -l
เป็นสิ่งสำคัญหากคุณอนุญาตให้บางโปรแกรมระบุเส้นทางแบบเต็ม และผู้ใช้ต้องไม่มีสิทธิ์ยกเลิกการเชื่อมโยงหรือแก้ไขโปรแกรมนั้น หรืออาจถูกแทนที่ด้วยสิ่งอื่น