2013-06-03 7 views
7

के रूप में सिस्टम डिमन चलाने की पीआईडी ​​फ़ाइल के लिए पसंदीदा स्थान this question से मेरा प्रश्न संबंधित है, लेकिन प्रश्न में प्रक्रिया क्रॉन से और गैर-मूल उपयोगकर्ताओं द्वारा चलायी जाती है। इस प्रकार, कई उपयोगकर्ताओं के पास वास्तव में घर डीआईआर नहीं है (या उनके घर के डीआईआर /usr/share/package_name पर इंगित करते हैं जो पीआईडी ​​फ़ाइल के लिए आदर्श स्थान नहीं है)।गैर-रूट उपयोगकर्ता

/var/run में संग्रहीत समस्याग्रस्त है, क्योंकि यह निर्देशिका रूट के अलावा लिखने योग्य नहीं है।

मैं /tmp का उपयोग कर सकता हूं, लेकिन मुझे आश्चर्य है कि यह सुरक्षा कारणों से आदर्श है या नहीं।

मैं /var/run जो उपयुक्त उपयोगकर्ता के स्वामित्व में है में एक निर्देशिका बनाने के लिए एक स्टार्टअप स्क्रिप्ट के लिए व्यवस्था कर सकता है (मैं पैकेज पर ऐसा कर सकते हैं नहीं स्थापित समय, के रूप में /var अक्सर tmpfs के रूप में रखा जाता है, तो एक समान नहीं होती)।

यहां सबसे अच्छा अभ्यास क्या है?

+0

मुझे एक विचार है। यदि आप/tmp का उपयोग कर रहे हैं, तो क्या होगा, लेकिन एक pidfile की तलाश है जिसे 'yourdaemon.pid.UNIQUE_KEY' कहा जाता है और इसका डिमन के उपयोगकर्ता का स्वामित्व है? – hek2mgl

+0

@ hek2mgl: 'UNIQUE_KEY' को यादृच्छिक होना होगा, लेकिन इसमें कुछ संभावनाएं हैं। यह पीआईडी ​​फ़ाइल को थोड़ा परेशान करने का पता लगाता है, क्योंकि डेमॉन को '/ tmp/*' में सभी फ़ाइलों को पढ़ना होता है और अपेक्षित पैटर्न और स्वामित्व के विरुद्ध तुलना करना पड़ता है, लेकिन ऐसा लगता है कि यह सुरक्षित होना चाहिए। – Flimzy

+0

@ hek2mgl: यदि आप इसे किसी उत्तर में बदलना चाहते हैं, तो मैं इसे फिर से वोट दूंगा। और इस बिंदु पर, मैं कहूंगा कि यह स्वीकार किए जाने के लिए अग्रणी है। – Flimzy

उत्तर

2

अच्छा सवाल :), मैं बिल्कुल पल में वही हूं। मुझे यकीन नहीं है कि यह सही जवाब है, लेकिन मुझे उम्मीद है कि यह मदद करता है और मैं भी प्रतिक्रिया की सराहना करता हूं।

मैंने चारों ओर गुगल किया है और पाया है कि प्रति उपयोगकर्ता डिमन को डीबीस सेवा के रूप में पंजीकृत करना एक सुरुचिपूर्ण समाधान है। डीबीस यह सुनिश्चित कर सकता है कि सेवा सिर्फ एक बार चलती है। एक पिडफाइल की कोई ज़रूरत नहीं है। है कि आप घर के लिए नहीं लिख सकता

$HOME/.yourdaemon/pid 

अपनी टिप्पणी मुझे एहसास हुआ के बाद,:

एक अन्य समाधान (मेरे वर्तमान) की तरह एक निर्देशिका में पीआईडी ​​फ़ाइल बनाने के लिए किया जाएगा। मैं dbus

अद्यतन

मैं एक विचार है इस पर गौर करने के लिए सुझाव है। क्या होगा यदि आप/tmp का उपयोग कर रहे हैं, लेकिन एक pidfile की तलाश है जिसे yourdaemon.pid.UNIQUE_KEY कहा जाता है और इसका डिमन के उपयोगकर्ता का स्वामित्व है? यह ठीक काम करना चाहिए।

UNIQUE_KEY यादृच्छिक उत्पन्न होना चाहिए (पसंदीदा टेम्पमनाम का उपयोग कर रहा है क्योंकि यह रेस कंडीशन सबूत है)।

+0

आपके $ HOME सुझाव मेरे मामले में काम नहीं करता है, कारणों से मैंने प्रश्न में बताया है। अर्थात्, कोई $ HOME नहीं है, या $ HOME एक गैर-लेखन योग्य स्थान है। हालांकि, मैं dbus में देखता हूँ। – Flimzy

+4

जबकि आपके पूरी तरह से बचपन के व्यवहार, जिसमें सीरियल डाउन-वोटिंग और सीरियल मेरे अन्य प्रश्नों के करीबी मतदान शामिल हैं, मुझे अन्यथा धन्यवाद देता है, मैं आपके स्तर पर उतरने को तैयार नहीं हूं। मैं अपने कोड में यादृच्छिक रूप से नामित पीआईडी ​​फ़ाइल सुझाव का उपयोग कर रहा हूं, इसलिए आपको स्वीकृति क्रेडिट मिलता है। – Flimzy

+0

यह बचपन नहीं है। कभी-कभी किसी को ऑनलाइन वापस पाने का सबसे अच्छा तरीका होता है। अगर मेरे पास आपका फोन नंबर था तो मैंने आपको फोन किया होगा। और हाँ, निश्चित रूप से आप मेरे विचार का उपयोग कर रहे हैं क्योंकि यह अच्छा है (और नींद की रात का नतीजा) :) hehe – hek2mgl

-2

@Flimzy - सुरक्षा समस्या क्या है?

निश्चित रूप से अगर किसी के पास मशीन तक पहुंच है तो वे सिस्टम कमांड ps का उपयोग कर सकते हैं? फिर वे घोड़ों के मुंह से प्रक्रिया आईडी प्राप्त करते हैं।

तो उत्तर जहां भी आप चाहते हैं उसे रखना और अन्य सुरक्षा मुद्दों पर ध्यान देना है। यानी वह व्यक्ति आपकी मशीन तक कैसे पहुंचता है?

+2

कम से कम, एक हमलावर जो/tmp के लिए लेखन पहुंच के साथ है, एक स्क्रिप्ट को पहले से चलने के बारे में सोचने में मूर्ख बना सकता है। इस स्क्रिप्ट के साथ अपनी पीआईडी ​​फाइल के साथ कैसे बातचीत करता है, इस पर निर्भर करता है कि शायद कुछ और खतरनाक हो सकता है। – Flimzy

+2

बेशक, मैं अपनी स्क्रिप्ट को अपनी पीआईडी ​​फ़ाइल के स्वामित्व और अनुमतियों की सुरक्षा के रूप में जांच सकता हूं क्योंकि किसी ने इसके साथ कुछ बुरा नहीं किया है ... लेकिन फिर इसे अपनी नई पीआईडी ​​फ़ाइल लिखने के लिए एक वैकल्पिक स्थान होना चाहिए। ... – Flimzy

+0

@Flimzy - मैं आपको कहूंगा कि अगर अटैचर '/ tmp' पर लिखने में सक्षम है तो डिमन की प्रक्रिया आईडी का उनका ज्ञान सूची में बहुत कम है। (यानी वे आपकी मशीन तक कैसे पहुंच सकते हैं) –

संबंधित मुद्दे