किसी द्वारा दिए गए उपयोगकर्ता की सभी प्रक्रियाओं को हत्या के योग्य बना देना


15

एक साझा सर्वर पर, मैं कुछ बहुत कम प्राथमिकता वाले उपयोगकर्ता रखना चाहूंगा जैसे कि जब भी किसी अन्य उपयोगकर्ता (रूट विशेषाधिकारों के बिना) को संसाधनों की आवश्यकता होती है, तो वे किसी भी निम्न प्राथमिकता वाले उपयोगकर्ताओं की प्रक्रियाओं को मार सकते हैं।

क्या ऐसा कुछ होने देना संभव है?


1
सुडू-यू उपयोगकर्ता को एक समूह में संभवतः आवश्यक सभी उपयोगकर्ता के लिए सही हत्या करें
किवी

4
मुझे वास्तव में उम्मीद है कि ये कम प्राथमिकता वाले उपयोगकर्ता वास्तविक मानव उपयोगकर्ता हैं, और आप और आपके दोस्त शुद्ध-नस्ल वाले BOFH हैं । यह प्रश्न को और अधिक पेचीदा बना देता है।
पाइप

@DavidFoerster, एक मुद्दा यह है कि जब सीपीयू 100% कम प्राथमिकता वाली प्रक्रिया में नहीं है तब भी प्रोसेसर कैश आदि को भर सकता है। इसी तरह डिस्क एक्सेस आदि के साथ
इयान

जवाबों:


24

अन्य उपयोगकर्ताओं को निम्न प्राथमिकता वाले उपयोगकर्ता के रूप में प्रक्रियाओं को मारने की अनुमति दें

sudo -u lowpriouser /bin/kill PID

एक उपयोगकर्ता केवल अपनी प्रक्रियाओं का संकेत दे सकता है, जब तक कि उनके पास रूट विशेषाधिकार न हों। फ़ाइल sudo -uमें सही सेट-अप के साथ एक उपयोगकर्ता का उपयोग करके sudoersकम प्राथमिकता वाले उपयोगकर्ता की पहचान मान सकते हैं और प्रक्रिया को मार सकते हैं।

उदाहरण के लिए:

%killers ALL = (lowpriouser) /bin/kill

इस समूह में सभी उपयोगकर्ताओं की अनुमति होगी killersचलाने के लिए /bin/killके रूप में lowpriouser

sudoersअपने सिस्टम पर मैनुअल भी देखें ।


एक OpenBSD प्रणाली पर, उसी doasतरह एक विन्यास के साथ देशी उपयोगिता के माध्यम से किया जा सकता है

permit :killers as lowpriouser cmd /bin/kill

फिर

doas -u lowpriouser /bin/kill PID

के लिए मैनुअल देखें doasऔर doas.conf


यदि आप किसी को मारने की आज्ञा देते हैं , तो आप इसे मनमाने प्रक्रियाओं के लिए असंबंधित संकेतों को भेजने के लिए इसका दुरुपयोग कर सकते हैं, जो एक सुरक्षा चिंता का विषय हो सकता है।
वन

@ यही कारण है कि मैं सुझाव नहीं देता कि सभी को रूट खाते का उपयोग करने की क्षमता दी जाए 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) लिखा था जो लंबे समय तक चलने वाली नौकरियों की तलाश करता है और उत्तरोत्तर उनकी प्राथमिकता को कम करता है जो वे चलाते हैं। ।

EDIT वहाँ एक पैकेज है जिसे andआधुनिक यूनीक के लिए यह कार्यक्षमता प्रदान करता है।


एक मुद्दा यह है कि जब सीपीयू 100% कम प्राथमिकता वाली प्रक्रिया में नहीं है तब भी प्रोसेसर कैश आदि को भर सकता है। इसी तरह डिस्क एक्सेस आदि के साथ
इयान रिंगरोज जूल

@IanRingrose केवल उन कार्यों को चलाने के लिए निर्धारित किया गया है जो कैश पर कब्जा कर सकते हैं या डिस्क एक्सेस कर सकते हैं।
अलनीतक

4

मुझे लगता है कि आप गलत कोण से समस्या का सामना कर रहे हैं: यदि कोई प्रक्रिया कम प्राथमिकता सेटिंग्स (CPU, I / O) पर चलाई जाती है, तो यह अन्य प्रक्रियाओं को बहुत प्रभावित नहीं करना चाहिए क्योंकि इसे चलाने के लिए शेड्यूल नहीं किया जाएगा। स्मृति उपयोग के लिए, यदि मुख्य मेमोरी तंग है और यह प्रक्रिया लंबे समय तक चलने के लिए निर्धारित नहीं थी (उदाहरण के लिए सीपीयू और आई / ओ बाधाओं के कारण), तो इसके "साफ" पृष्ठ हटा दिए जाते हैं और इसके "गंदे" पृष्ठ प्रतिबद्ध होते हैं या बाहर अदला-बदली और अब अन्य प्रक्रियाओं के प्रदर्शन को प्रभावित नहीं करता है।

निष्कर्ष: सही प्राथमिकता सेटिंग और पर्याप्त स्वैप स्थान के साथ अधिक महत्वपूर्ण कार्यों के लिए "कमरा" बनाने के लिए कम प्राथमिकता वाली नौकरियों को मारने के लिए अनावश्यक होना चाहिए; इसके बजाय कर्नेल देखभाल करेगा ताकि पूर्व को सोने के लिए रखा जा सके।


1
"कम प्राथमिकता" केवल निहित अर्थ के बिना "महत्वपूर्ण नहीं" हो सकता है "कम CPU प्राथमिकता पर चल रहा है"। हालांकि यह प्रश्न में स्पष्ट नहीं किया गया है।
Kusalananda

@ कुसलानंद: मैं मानता हूं कि यह सवाल में स्पष्ट नहीं है, लेकिन मेरा जवाब बताता है कि यह वास्तविकता में होना चाहिए।
डेविड फ़ॉस्टर 01

1
हालांकि यह इतना आसान नहीं है। यहां तक ​​कि एक कम-प्राथमिकता वाली प्रक्रिया भी सिस्टम को रोक सकती है, खासकर अगर इसमें मेमोरी बाधाएं हैं: उन लोगों के आधार पर यह कैसे निर्धारित किया जाता है, यह प्रक्रिया को स्वैप कर देगा। स्वैपिंग के कारण I / O (जो कि प्रक्रिया के I / O कोटा में शामिल नहीं हो सकता है) और यह परिमाण के आदेशों द्वारा प्रणाली को कम उत्तरदायी बना देगा। तब आप शायद यह भी चाहते हैं कि सामान्य तौर पर (जबकि अन्य को संसाधनों की आवश्यकता नहीं है), कम-प्राथमिकता वाली प्रक्रिया वास्तव में उन सभी संसाधनों को प्राप्त कर सकती है जिनकी आवश्यकता है (जो विशिष्ट मेमोरी सीमा को अनुपयुक्त बनाता है)। सीपीयू के शेयर यहां मदद करते हैं।
जोनास श्फ़र

@JonasWielicki, पूरी प्रक्रिया को स्वैप करने का पुराना "यूनिक्स तरीका" इसका लाभ था। अगर मुझे सही ढंग से याद है तो 1990 के दशक में एचपीयूएक्स इस समस्या को हल करने के लिए कुछ उपकरण दे सकता है।
इयान रिंगरोज ने
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.