ulimit: हार्ड और सॉफ्ट लिमिट के बीच अंतर


87

अल्मीट में कठोर और नरम सीमा के बीच अंतर क्या है?

खुली फ़ाइलों की संख्या के लिए, मेरे पास 1024 की सॉफ्ट सीमा और 10240 की एक कठिन सीमा है। 1024 से अधिक फ़ाइलों को खोलने वाले कार्यक्रमों को चलाना संभव है। के लिए नरम सीमा क्या है?


4
क्या आप बात कर रहे हैं ulimit -n? बहुत कम मूल्य ( bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c') के साथ एक शेल चलाने की कोशिश करें । आउटपुट क्या है?
गाइल्स

जवाबों:


77

एक कठिन सीमा को केवल जड़ से उठाया जा सकता है (कोई भी प्रक्रिया इसे कम कर सकती है)। इसलिए यह सुरक्षा के लिए उपयोगी है: एक गैर-रूट प्रक्रिया एक कठिन सीमा को पार नहीं कर सकती है। लेकिन यह असुविधाजनक है कि एक गैर-रूट प्रक्रिया में अपने बच्चों की तुलना में कम सीमा नहीं हो सकती है।

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

नरम सीमा के लिए एक विशिष्ट उपयोग का मामला कोर डंप ( ulimit -Sc 0) को अक्षम करना है, जबकि आप उन्हें डिबगिंग ( (ulimit -Sc unlimited; myprocess)) के लिए एक विशेष प्रक्रिया के लिए सक्षम करने का विकल्प रखते हैं ।

ulimitशेल कमांड के चारों ओर एक आवरण है setrlimitप्रणाली अधिकार, ताकि जहां निश्चित प्रलेखन मिलेगा।

ध्यान दें कि कुछ सिस्टम सभी सीमाओं को लागू नहीं कर सकते हैं। विशेष रूप से, कुछ सिस्टम फ़ाइल डिस्क्रिप्टर (लिनक्स करता है) पर प्रति-प्रक्रिया सीमा का समर्थन नहीं करते हैं; यदि आपका नहीं है, तो शेल कमांड एक नो-ऑप हो सकता है।


6
सॉफ्ट लिमिट केस के लिए +1। निवासी सेट आकार सीमा ( ) ulimit -m, RLIMIT_RSSउस सीमा का एक उदाहरण है जो अब लिनक्स पर प्रभावी नहीं है। वर्चुअल मेमोरी सीमा ( ulimit -v, RLIMIT_AS) काम करता है, हालांकि।
एडम ज़ल्कमैन 17

@, क्या आप प्रक्रिया को पुनः आरंभ किए बिना मतलब रखते हैं, जब हम नरम सीमा बदलते हैं, तो यह तुरंत प्रभाव हो सकता है?
रयान

1
@ रयान हाँ, एक प्रोग्राम किसी भी समय कॉल setrlimitकरके अपनी हार्ड लिमिट बदल सकता है (जब तक कि कोर्स की जड़ के रूप में नहीं चल रहा है तब तक हार्ड लिमिट की अनुमति दी गई है)। अधिकांश कार्यक्रमों में एक कमांड नहीं होता है जो उपयोगकर्ता को ऐसा करने देता है, लेकिन आप प्रोग्राम को डिबगर के साथ संलग्न करने और इसे setrlimitकॉल जारी करने की कोशिश कर सकते हैं , या लिनक्स के तहत आप कॉल कर सकते हैं prlimit(जिसके लिए मुझे किसी भी शेल का पता नहीं है। उपयोगिता)।
गाइल्स

1
अब एक prlimitशेल उपयोगिता भी है।
टेल्कोएम

0

सुरक्षा उद्देश्य के लिए कठिन सीमा है। एक गैर-रूट उपयोगकर्ता के लिए, वह केवल वर्तमान में निर्धारित हार्ड सीमा से हार्ड सीमा को कम कर सकता है; वह इसे बढ़ा नहीं सकता। कठोर सीमा को बढ़ाना केवल रूट उपयोगकर्ता (या शायद sudo विशेषाधिकार के साथ किया जा सकता है, उस बारे में निश्चित नहीं है)। एक गैर-रूट उपयोगकर्ता क्या कर सकता है, इसकी प्रक्रियाओं के लिए एक सीमा (जिसे नरम सीमा कहा जाता है) का चयन किया जा सकता है जो [0, कठिन सीमा] हो सकती है। इसकी नरम सीमा जिसे प्रक्रियाओं द्वारा देखा और लिया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.