अल्मीट में कठोर और नरम सीमा के बीच अंतर क्या है?
खुली फ़ाइलों की संख्या के लिए, मेरे पास 1024 की सॉफ्ट सीमा और 10240 की एक कठिन सीमा है। 1024 से अधिक फ़ाइलों को खोलने वाले कार्यक्रमों को चलाना संभव है। के लिए नरम सीमा क्या है?
अल्मीट में कठोर और नरम सीमा के बीच अंतर क्या है?
खुली फ़ाइलों की संख्या के लिए, मेरे पास 1024 की सॉफ्ट सीमा और 10240 की एक कठिन सीमा है। 1024 से अधिक फ़ाइलों को खोलने वाले कार्यक्रमों को चलाना संभव है। के लिए नरम सीमा क्या है?
जवाबों:
एक कठिन सीमा को केवल जड़ से उठाया जा सकता है (कोई भी प्रक्रिया इसे कम कर सकती है)। इसलिए यह सुरक्षा के लिए उपयोगी है: एक गैर-रूट प्रक्रिया एक कठिन सीमा को पार नहीं कर सकती है। लेकिन यह असुविधाजनक है कि एक गैर-रूट प्रक्रिया में अपने बच्चों की तुलना में कम सीमा नहीं हो सकती है।
किसी भी समय प्रक्रिया द्वारा एक नरम सीमा को बदला जा सकता है। इसलिए यह सुविधाजनक है जब तक प्रक्रियाएं सहयोग करती हैं, लेकिन सुरक्षा के लिए अच्छा नहीं है।
नरम सीमा के लिए एक विशिष्ट उपयोग का मामला कोर डंप ( ulimit -Sc 0
) को अक्षम करना है, जबकि आप उन्हें डिबगिंग ( (ulimit -Sc unlimited; myprocess)
) के लिए एक विशेष प्रक्रिया के लिए सक्षम करने का विकल्प रखते हैं ।
ulimit
शेल कमांड के चारों ओर एक आवरण है setrlimit
प्रणाली अधिकार, ताकि जहां निश्चित प्रलेखन मिलेगा।
ध्यान दें कि कुछ सिस्टम सभी सीमाओं को लागू नहीं कर सकते हैं। विशेष रूप से, कुछ सिस्टम फ़ाइल डिस्क्रिप्टर (लिनक्स करता है) पर प्रति-प्रक्रिया सीमा का समर्थन नहीं करते हैं; यदि आपका नहीं है, तो शेल कमांड एक नो-ऑप हो सकता है।
ulimit -m
, RLIMIT_RSS
उस सीमा का एक उदाहरण है जो अब लिनक्स पर प्रभावी नहीं है। वर्चुअल मेमोरी सीमा ( ulimit -v
, RLIMIT_AS
) काम करता है, हालांकि।
setrlimit
करके अपनी हार्ड लिमिट बदल सकता है (जब तक कि कोर्स की जड़ के रूप में नहीं चल रहा है तब तक हार्ड लिमिट की अनुमति दी गई है)। अधिकांश कार्यक्रमों में एक कमांड नहीं होता है जो उपयोगकर्ता को ऐसा करने देता है, लेकिन आप प्रोग्राम को डिबगर के साथ संलग्न करने और इसे setrlimit
कॉल जारी करने की कोशिश कर सकते हैं , या लिनक्स के तहत आप कॉल कर सकते हैं prlimit
(जिसके लिए मुझे किसी भी शेल का पता नहीं है। उपयोगिता)।
prlimit
शेल उपयोगिता भी है।
सुरक्षा उद्देश्य के लिए कठिन सीमा है। एक गैर-रूट उपयोगकर्ता के लिए, वह केवल वर्तमान में निर्धारित हार्ड सीमा से हार्ड सीमा को कम कर सकता है; वह इसे बढ़ा नहीं सकता। कठोर सीमा को बढ़ाना केवल रूट उपयोगकर्ता (या शायद sudo विशेषाधिकार के साथ किया जा सकता है, उस बारे में निश्चित नहीं है)। एक गैर-रूट उपयोगकर्ता क्या कर सकता है, इसकी प्रक्रियाओं के लिए एक सीमा (जिसे नरम सीमा कहा जाता है) का चयन किया जा सकता है जो [0, कठिन सीमा] हो सकती है। इसकी नरम सीमा जिसे प्रक्रियाओं द्वारा देखा और लिया जाता है।
ulimit -n
? बहुत कम मूल्य (bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c'
) के साथ एक शेल चलाने की कोशिश करें । आउटपुट क्या है?