ทำให้ทุกกระบวนการของผู้ใช้ที่กำหนดสามารถฆ่าได้โดยใครก็ได้


15

บนเซิร์ฟเวอร์ที่ใช้ร่วมกันฉันต้องการให้ผู้ใช้ที่มีระดับความสำคัญต่ำมาก ๆ ต้องใช้ทรัพยากรเมื่อใดก็ตามที่ผู้ใช้รายอื่น (ที่ไม่มีสิทธิ์รูท) ต้องการทรัพยากรพวกเขาสามารถฆ่ากระบวนการใด ๆ ของผู้ใช้ที่มีลำดับความสำคัญต่ำ

เป็นไปได้ไหมที่จะปล่อยให้เป็นอย่างนั้น?


1
ให้ผู้ใช้ sudo -u ฆ่าสิทธิ์กับผู้ใช้ทุกคนที่ต้องการในกลุ่ม
Kiwy

4
ผมหวังว่าผู้ใช้เหล่านี้มีความสำคัญต่ำเป็นผู้ใช้ของมนุษย์ที่เกิดขึ้นจริงและคุณและเพื่อนของคุณมีความบริสุทธิ์พันธุ์BOFH s มันทำให้คำถามน่าสนใจยิ่งขึ้น
ท่อ

@DavidFoerster ปัญหาหนึ่งก็คือว่าแม้ในขณะที่ CPU ไม่ได้อยู่ที่ 100% ขั้นตอนการลำดับความสำคัญต่ำสามารถกรอกโปรเซสเซอร์แคช ฯลฯ ในทำนองเดียวกันกับการเข้าถึงดิสก์ ฯลฯ
เอียน Ringrose

คำตอบ:


24

ให้สิทธิ์ผู้ใช้รายอื่นเพื่อฆ่ากระบวนการในฐานะผู้ใช้ที่มีลำดับความสำคัญต่ำ

sudo -u lowpriouser /bin/kill PID

ผู้ใช้สามารถส่งสัญญาณกระบวนการของตนเองเว้นแต่ว่าพวกเขามีสิทธิ์รูท โดยใช้sudo -uผู้ใช้ที่มีการตั้งค่าที่ถูกต้องในsudoersไฟล์อาจถือว่าตัวตนของผู้ใช้ลำดับความสำคัญต่ำและฆ่ากระบวนการ

ตัวอย่างเช่น:

%killers ALL = (lowpriouser) /bin/kill

นี้จะช่วยให้ผู้ใช้ทุกคนในกลุ่มkillersที่จะเรียกว่าเป็น/bin/killlowpriouser

ดูsudoersคู่มือในระบบของคุณ


ในระบบ OpenBSD สามารถทำได้ผ่านdoasยูทิลิตี้ดั้งเดิมที่มีการกำหนดค่าเช่น

permit :killers as lowpriouser cmd /bin/kill

แล้วก็

doas -u lowpriouser /bin/kill PID

ดูคู่มือสำหรับและdoasdoas.conf


หากคุณอนุญาตให้ใช้คำสั่ง kill คุณสามารถใช้คำสั่งส่งสัญญาณที่ไม่เกี่ยวข้องกับการยกเลิกไปยังกระบวนการโดยพลการซึ่งอาจเป็นปัญหาด้านความปลอดภัย
ป่า

@forest นี่คือเหตุผลที่ฉันไม่แนะนำให้ทุกคนสามารถใช้บัญชีรูทเพื่อทำงานkillได้ โปรดทราบว่าฉันแนะนำให้ใช้กลุ่มผู้ใช้ ( killers) ไม่ใช่ผู้ใช้ทุกคน
Kusalananda

แต่สิ่งที่ผมหมายถึงคือว่าจะช่วยให้กลุ่มที่จะส่งไม่เพียงkill -HUP kill -TERM
ป่า

@ ใช่ใช่ lowpriouserจะช่วยให้การส่งสัญญาณไปยังกระบวนการที่เป็นเจ้าของโดย หากคุณต้องการที่จะ จำกัด การส่งสัญญาณไปTERMแล้วเขียนสคริปต์กระดาษห่อเปลือกรอบ ๆและช่วยให้คนที่จะใช้ที่แทน/bin/kill /bin/kill
Kusalananda

1
%killers ALL = (lowpriouser) /bin/kill -(9, 15) [0-9 ]*
ป่า

5

คุณไม่ควรฆ่ากระบวนการหากพวกเขามีความสำคัญต่ำพวกเขาจะใช้ทรัพยากรน้อย

หากต้องการทำให้พวกเขามีลำดับความสำคัญต่ำให้เปลี่ยนลำดับความสำคัญด้วยตนเองหรือใช้ดีมอนเช่นautoniceที่ฉันเขียนสำหรับ DEC OSF / 1 เมื่อหลายปีก่อน (c. 1994) ที่มองหางานที่ต้องใช้เวลานานและลดลำดับความสำคัญของพวกเขา .

แก้ไขมีแพ็คเกจที่เรียกandว่ามีฟังก์ชันนี้สำหรับ Unices ที่ทันสมัย


หนึ่งปัญหาคือว่าแม้ในขณะที่ CPU ไม่ได้อยู่ที่ 100% ขั้นตอนการลำดับความสำคัญต่ำสามารถกรอกโปรเซสเซอร์แคช ฯลฯ ในทำนองเดียวกันกับการเข้าถึงดิสก์ ฯลฯ
เอียน Ringrose

@IanRingrose เฉพาะงานที่ได้รับการกำหนดให้ทำงานเท่านั้นที่สามารถครอบครองแคชหรือทำการเข้าถึงดิสก์
Alnitak

4

ฉันคิดว่าคุณเข้าหาปัญหาจากมุมผิด: หากกระบวนการทำงานที่การตั้งค่าลำดับความสำคัญต่ำ (CPU, I / O) กระบวนการนั้นจะไม่ส่งผลกระทบต่อกระบวนการอื่นมากนักเพราะจะไม่มีการกำหนดเวลาให้ทำงาน สำหรับการใช้งานหน่วยความจำหากหน่วยความจำหลักแน่นและกระบวนการไม่ได้ถูกกำหนดเวลาให้ทำงานเป็นเวลานาน (เช่นเนื่องจากข้อ จำกัด ของ CPU และ I / O) หน้า "clean" ของมันจะลดลงและหน้าสกปรก หรือสลับออกและไม่มีผลต่อประสิทธิภาพของกระบวนการอื่น ๆ อีกต่อไป

สรุป: ด้วยการตั้งค่าลำดับความสำคัญที่เหมาะสมและพื้นที่สว็อปเพียงพอคุณไม่จำเป็นต้องฆ่างานที่มีลำดับความสำคัญต่ำเพื่อให้ "ห้อง" สำหรับงานที่สำคัญมากขึ้น เคอร์เนลจะดูแลให้อดีตเข้าสู่โหมดสลีปแทน


1
"ลำดับความสำคัญต่ำ" อาจหมายถึง "ไม่สำคัญ" หากไม่มีความหมายโดยนัย "ทำงานที่ลำดับความสำคัญของ CPU ลดลง" นี้ไม่ได้ทำให้ชัดเจนในคำถามว่า
Kusalananda

@ Kusalananda: ฉันยอมรับว่านี่ไม่ชัดเจนในคำถาม แต่คำตอบของฉันระบุว่าควรเป็นจริง
David Foerster

1
มันไม่ง่ายอย่างนั้น แม้แต่กระบวนการที่มีลำดับความสำคัญต่ำก็สามารถทำให้ระบบหยุดชะงักได้โดยเฉพาะอย่างยิ่งหากมีข้อ จำกัด ของหน่วยความจำ: ขึ้นอยู่กับวิธีการตั้งค่าเหล่านั้นก็จะทำให้การแลกเปลี่ยนกระบวนการ การแลกเปลี่ยนทำให้ I / O (ซึ่งอาจไม่รวมอยู่ในโควต้า I / O ของกระบวนการ) และจะทำให้ระบบตอบสนองน้อยลงตามคำสั่งของขนาด จากนั้นคุณอาจต้องการที่จะโดยทั่วไป (ในขณะที่คนอื่นไม่ต้องการทรัพยากร) กระบวนการที่มีลำดับความสำคัญต่ำสามารถได้รับทรัพยากรทั้งหมดที่จำเป็นจริง ๆ (ซึ่งทำให้การ จำกัด หน่วยความจำทั่วไปไม่เหมาะสม) CPU ช่วยกันได้ที่นี่
Jonas Schäfer

@ JonasWielicki วิธี "unix" แบบเก่าของการแลกเปลี่ยนกระบวนการที่สมบูรณ์มีข้อได้เปรียบ หากฉันจำได้อย่างถูกต้อง HPUX สามารถใช้เครื่องมือบางอย่างในการแก้ปัญหานี้ในปี 1990
Ian Ringrose
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.