मैं एक प्रोग्राम लिख रहा हूं जो बाल प्रक्रियाओं को जन्म देता है। सुरक्षा कारणों से, मैं सीमित करना चाहता हूं कि ये प्रक्रियाएं क्या कर सकती हैं। मुझे प्रोग्राम के बाहर से सुरक्षा उपायों के बारे में पता है जैसे chroot
या ulimit
, लेकिन मैं उससे कुछ और करना चाहता हूं। मैं बाल प्रक्रिया द्वारा किए गए सिस्टम कॉल को सीमित करना चाहता हूं (उदाहरण के लिए open()
, fork()
और ऐसी चीजों पर कॉल को रोकना)। क्या उसे करने का कोई तरीका है? सबसे अच्छा, अवरुद्ध सिस्टम कॉल को एक त्रुटि के साथ वापस आना चाहिए, लेकिन यदि यह संभव नहीं है, तो प्रक्रिया को मारना भी अच्छा है।कुछ सिस्टम कॉल निष्पादित करने के लिए प्रक्रियाओं को रोकना
मुझे लगता है कि इसे ptrace()
पर किया जा सकता है लेकिन मैन पेज से मैं वास्तव में समझ नहीं पा रहा हूं कि इस उद्देश्य के लिए इसका उपयोग कैसे किया जाए।
शायद आप SELinux http://en.wikipedia.org/wiki/Security-Enhanced_Linux चाहते हैं, मैं 100% निश्चित नहीं हूं, लेकिन इसमें प्रोग्राम करने योग्य API होना चाहिए। –
['prctl (PR_SET_SECCOMP, ...)'] (http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html) जो भी आप चाहते हैं हो सकता है। जैसा कि आप प्राप्त कर सकते हैं "syscalls की अनुमति नहीं" के करीब है। – Damon
'prctl (PR_SET_SECCOMP, ...) 'के साथ समस्या यह है कि यह' exec() 'कॉल को भी अवरुद्ध करता है, इसलिए यह मेरे लिए उपयोग करने योग्य नहीं है। – petersohn