सवाल पीआईडी ​​फ़ाइल को / var / run में लिखने की क्या अनुमति है


उबंटू

स्पर्श करें: `/var/run/test.pid 'को स्पर्श नहीं कर सकता: अनुमति अस्वीकार कर दी गई है

मैं स्टार्ट-स्टॉप-डिमन शुरू कर रहा हूं और पीआईडी ​​फ़ाइल को / var / run में लिखना चाहता हूं स्टार्ट-स्टॉप-डिमन मेरे प्रोग्राम-उपयोगकर्ता के रूप में चलाया जाता है

/ var / run सेटिंग drwxr-xr-x 9 रूट रूट है

मैं रूट प्रोग्राम में अपना प्रोग्राम-उपयोगकर्ता डालने से बचना चाहता हूं।


42
2017-07-11 10:04


मूल




जवाब:


डिफ़ॉल्ट रूप से, आप केवल उपयोगकर्ता के रूप में / var / run को 0 की प्रभावी उपयोगकर्ता आईडी (यानी रूट के रूप में) लिख सकते हैं। यह अच्छे कारणों से है, इसलिए आप जो कुछ भी करते हैं, जाओ / var / run की अनुमतियों को न बदलें ... इसके बजाए, रूट के रूप में, निर्देशिका बनाएं के अंतर्गत / Var / चलाएँ:

# mkdir /var/run/mydaemon

फिर उपयोगकर्ता / समूह में अपना स्वामित्व बदलें जिसके तहत आप अपनी प्रक्रिया को चलाने की इच्छा रखते हैं:

# chown myuser:myuser /var/run/mydaemon

अब / var / run के बजाए / var / run / mydaemon का उपयोग करने के लिए निर्दिष्ट करें।

प्रश्न में उपयोगकर्ता के रूप में परीक्षण चलाने के द्वारा आप हमेशा इसका परीक्षण कर सकते हैं।


63
2017-07-11 11:50



यह मेरे लिए ठीक काम करता था लेकिन जब मैंने अपने सर्वर को फिर से शुरू किया /var/run/mydaemon निर्देशिका चली गई थी। - myborobudur
यह एक पूर्ण उत्तर नहीं है, / var / run उबंटू पर डिफ़ॉल्ट रूप से tmpfs है। प्रत्येक बार सर्वर शुरू हो जाता है mkdir और chown कमांड को फिर से चलाने की आवश्यकता है। - Tim
@ टिम कैसे करें संपादित करेंजवाब देने और इसे पूरा करने के लिए? - kaiser
यदि आप डिमन से निपट रहे हैं तो एक साफ समाधान सिस्टम / यूनिट फ़ाइल में पथ / var / run / mydaemon को वर्णित अनुसार जोड़ना होगा यहाँ। Mitdir और chown कमांड को init.d स्क्रिप्ट में जोड़ने के लिए एक आसान हैकी समाधान होगा (यदि कोई मौजूद है) - odedfos
एक बेहतर व्यापक उत्तर यहां है: superuser.com/a/1127720/71795 एक गलत जवाब जो बहुत ही सुरुचिपूर्ण लगता है यहां है: stackoverflow.com/a/5174433। सारांश: या तो उपयोग करें /tmp या ~। - Tim


mkdir /var/run/mydaemon
chown myuser:myuser /var/run/mydaemon

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

स्टार्टअप स्क्रिप्ट के हिस्से के रूप में mkdir और chmod को चलाने का एकमात्र व्यवहार्य समाधान है।


11
2018-01-07 17:13





आप इसे आजमा सकते हैं। एक निर्देशिका / var / run / test / और फिर इस निर्देशिका की अनुमति उसी उपयोगकर्ता को बदलें जैसे आपका प्रोग्राम चलता है। "चाउन / var / run / test /"। अब आपके आवेदन में पीआईडी ​​फ़ाइल का स्थान /var/run/test/test.pid पर बदलें। यह आपके लिए काम करने वाली चीज़ों को प्राप्त करना चाहिए।


2
2017-07-11 10:34





/ Var / run पर "चिपचिपा" बिट का उपयोग करने के बारे में क्या?

chmod + टी / var / रन?

शायद कुछ अन्य ऐप्स गड़बड़ करें, लेकिन ऐसा लगता है जैसे यह एक और समाधान होगा।

हालांकि, मैं अब के लिए एक अलग / var / run फ़ोल्डर बनाने के साथ रहूंगा।


1
2018-02-01 00:06





में प्रविष्टियां /etc/permissions स्थायी हैं किसी निर्देशिका के लिए स्वामित्व और अनुमतियां स्थायी बनाने के लिए वहां एक प्रविष्टि करें।


0
2017-08-22 01:49





अपने प्रोग्राम-उपयोगकर्ता को रूट समूह में डालने से बचने के लिए, दूसरों को पहुंच लिखने दें:

# chmod 757

-6
2017-07-11 10:30



कभी भी chmod 757 / var / run पर कभी नहीं करें! इससे गंभीर सुरक्षा समस्या होगी - michel
यह एक भयानक विचार है। यह एक संभावित रूप से भारी सुरक्षा समस्या का कारण बन जाएगा - Tom O'Connor
भले ही हम सुरक्षा समस्या को अनदेखा करते हैं, chmod 757 अगले रीबूट तक ही काम करेगा। एक नया उत्तर बनाने के बारे में खेद है, लेकिन दूसरी टिप्पणी का जवाब देने का कोई तरीका नहीं है। - Vladimir Nicolici
@ मिशेल, लेखक ने कभी नहीं कहा chmod पर /var/run। लेखक का मतलब उपनिर्देशिका के लिए हो सकता है। सुनिश्चित नहीं है कि सभी झगड़ा क्या है। - A-B-B