क्या प्रति-प्रक्रिया के आधार पर limit.conf मान लागू होते हैं?


25

मैं अपने ओरेकल उपयोगकर्ता के लिए nofileमूल्य को ट्यून कर रहा हूं /etc/security/limits.confऔर मेरे पास इसके व्यवहार के बारे में एक सवाल है: nofileउपयोगकर्ता अपनी सभी प्रक्रियाओं के लिए कुल कितनी फाइलें खोल सकता है या क्या यह उन सभी फाइलों की कुल संख्या को सीमित करता है जो उपयोगकर्ता के पास हो सकती हैं इसकी प्रत्येक प्रक्रिया के लिए खुला है?

विशेष रूप से, निम्नलिखित उपयोग के लिए:

oracle                  hard    nofile                  65536

जवाबों:


23

मानों में से limits.confअधिकांश सीमाएँ हैं जिन्हें ulimitशेल कमांड या setrlimitसिस्टम कॉल के साथ सेट किया जा सकता है । वे एक प्रक्रिया के गुण हैं। सीमाएं प्रत्येक प्रक्रिया के लिए स्वतंत्र रूप से लागू होती हैं। विशेष रूप से, प्रत्येक प्रक्रिया में nofileफ़ाइलें खोलने के लिए हो सकता है। उपयोगकर्ता की प्रक्रियाओं के द्वारा खुली फ़ाइलों की संख्या की कोई सीमा नहीं है।

nprocमें है कि यह एक उपयोगकर्ता के सभी प्रक्रियाओं पर योग करता है सीमा, एक विशेष मामले का एक सा है। फिर भी, यह अभी भी प्रति-प्रक्रिया लागू होता है: जब एक प्रक्रिया forkएक नई प्रक्रिया बनाने के लिए कॉल करती है, तो कॉल से इनकार किया जाता है यदि प्रक्रिया की यूरोप से संबंधित प्रक्रियाओं की संख्या प्रक्रिया के RLIMIT_NPROCमूल्य से बड़ी होगी ।

limits.confआदमी पेज बताते हैं कि सीमा एक सत्र के लिए लागू। इसका मतलब यह है कि एक सत्र में सभी प्रक्रियाओं में सभी एक ही सीमाएं होंगी (जब तक कि इन प्रक्रियाओं में से एक को नहीं बदला जाता)। इसका मतलब यह नहीं है कि किसी सत्र में प्रक्रियाओं पर कोई योग किया जाता है (यह भी ऐसा कुछ नहीं है जो ऑपरेटिंग सिस्टम को ट्रैक करता है - सत्र की एक धारणा है, लेकिन यह उससे अधिक महीन है, उदाहरण के लिए प्रत्येक X11 एप्लिकेशन समाप्त हो जाता है अपने ही सत्र में)। जिस तरह से यह काम करता है वह यह है कि लॉगिन प्रक्रिया खुद को कुछ सीमाएं निर्धारित करती है, और वे सभी बाल प्रक्रियाओं द्वारा विरासत में मिली हैं।

As अपवाद हैं maxlogins, maxsysloginsऔर chroot, जो लॉगिन को नकारने या प्रभावित करने के लिए लॉगिन प्रक्रिया के हिस्से के रूप में लागू होते हैं।


इसके विपरीत, क्या इसका मतलब है कि अलग-अलग सत्रों में अलग-अलग सीमाएं हो सकती हैं?
CMCDragonkai

1
@CMCDragonkai हाँ, उदाहरण के लिए यदि limit.confसत्रों के खुलने के समय के बीच में परिवर्तन हुआ है, या यदि अलग-अलग सीमाएँ (उन्हें रूट को छोड़कर छोटा होना होगा) में सेट हैं .profile
गिल्स एसओ- बुराई को रोकना '

1
@ अस्वीकरण यदि आप सभी चल रही प्रक्रियाओं पर पुनरावृति करते हैं और prlimit --pid $pidप्रत्येक पर चलते हैं, तो आप प्रभावी रूप से एक सक्रिय सत्र के लिए सीमा बदल सकते हैं। ध्यान दें कि आपको पुनरावृत्ति करते समय कुछ प्रक्रियाओं को कांटे जाने की स्थिति में आपको इसे कुछ बार करना पड़ सकता है।
गिल्स एसओ- बुराई को रोकना '15

1
@ अस्वीकरण संख्या मान लीजिए कि किसी उपयोगकर्ता के पास केवल दो प्रक्रियाएँ A और B हैं, जिनमें RLIMIT_NPROCA में 2 से 3 और B. में 3 है। तब B एक और प्रक्रिया को कांटा सकता है, लेकिन A नहीं कर सकता।
गिल्स एसओ- बुराई को रोकना '28

1
@ अस्वीकरण यदि आप B के माता-पिता में सीमा 2 में सेट करते हैं और फोर्क करने के बाद B में इसे नहीं बदलते हैं, तो B की सीमा 2 होगी। यदि आप B के माता-पिता में सीमा 2 पर सेट करते हैं, लेकिन आप B में सीमा बढ़ाते हैं, या यदि आप B को फोर्क करने से पहले B के माता-पिता को 3 में सीमा निर्धारित करते हैं और B को फोर्क करने के बाद इसे 2 पर सेट करते हैं, B के पास सीमा 3 पर सेट होगी। एकमात्र सीमा जो मायने रखती है वह इस प्रक्रिया में एक है जिसे fork () कहते हैं, सीमा नहीं उस प्रक्रिया के जनक या किसी अन्य प्रक्रिया में।
गिल्स एसओ- बुराई को रोकना '28
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.