2009-01-27 13 views
24

मैं एक नया डिमन लिख रहा हूं, जिसे डेबियन लिनक्स पर होस्ट किया जाएगा।मुझे गैर रूट रूट डेबियन लिनक्स डिमन से लॉग कैसे करना चाहिए?

मुझे पता चला है कि/var/log की जड़ केवल अनुमतियां लिखती है, इसलिए मेरा डिमन वहां लॉग फाइल नहीं लिख सकता है।

हालांकि, अगर यह वहां लिखता है, तो ऐसा लगता है कि यह स्वचालित लॉग रोटेशन प्राप्त करेगा, और उपयोगकर्ता के रूप में भी काम कर सकता है।

रूट के रूप में चलाने के बिना/var/log में दिखाई देने वाली लॉग प्रविष्टियों को लिखने के लिए डिमन के लिए अनुशंसित तरीका क्या है?

डिमन एक वेबसर्वर है, इसलिए लॉग यातायात अपाचे के समान होगा।

उत्तर

36

आप /var/log/mydaemon डेमॉन के उपयोगकर्ता स्वामित्व

9

जड़ के रूप में होने की तरह एक उप-डायरेक्टरी बनाएँ वहाँ एक लॉगफ़ाइल बना सकते हैं और वेब सर्वर उपयोगकर्ता के लिए फ़ाइलों को स्वामी बदलना चाहिए:

# touch /var/log/myserver.log 
# chown wwwuser /var/log/myserver.log 

तो सर्वर के लिए लिख सकते हैं यदि उपयोगकर्ता wwwuser के रूप में चलती हैं तो फ़ाइलें। हालांकि, स्वचालित लॉग रोटेशन नहीं मिलेगा। आपको /etc/logrotate.conf या /etc/logrotate.d/... पर लॉगफाइल जोड़ना होगा और logrotate सिग्नल होने पर आपके सर्वर को लॉगफाइल को फिर से खोलना होगा।

लॉगिंग के लिए आप syslog का भी उपयोग कर सकते हैं, यदि यह आपके परिदृश्य को बेहतर बनाता है।

+2

इसके बेहतर उपयोग करें। अगर आपके पास/var/log में फ़ाइल है और फ़ाइल हटा दी जाती है, तो गैर-रूट प्रक्रिया फ़ाइल को फिर से बनाने में सक्षम नहीं होगी –

+0

इसके अलावा डेमन घुमाएगा लॉग इन करने में सक्षम नहीं होगा, क्योंकि इसमें नहीं है logdir में नई फाइलें बनाने के लिए अनुमतियाँ। –

+0

आमतौर पर डेमॉन को फ़ाइल को पुन: बनाने की आवश्यकता नहीं होती है, लेकिन लॉग इनोटेटेड मौजूदा लॉग का नाम बदलता है और सही अनुमतियों के साथ एक नया लॉगफाइल बनाता है। फिर यह राक्षस को नई फ़ाइल का उपयोग करने के लिए कहता है, जो तब से हो सकता है क्योंकि इसमें पहले से ही सही अनुमतियां हैं। – sth

2

दो विकल्प:

root रूप
  1. प्रारंभ, फ़ाइल खोलते हैं, तो setuid साथ अनुमतियाँ छोड़ देते हैं। (मुझे अनुमतियों को छोड़ने के लिए सटीक सिस्टम कॉल याद नहीं है।) यदि आप टीसीपी पोर्ट 80 या 1024 से नीचे किसी भी पोर्ट से जुड़ना चाहते हैं तो आपको यह करना होगा।
  2. /var/log/mydaemon को डेमॉन के उपयोगकर्ता स्वामित्व वाले, WiseTechi said के रूप में।

/var/log के अंतर्गत फ़ाइलें स्वचालित रूप से घुमाए नहीं जाते हैं; इसके बजाए, रोटेशन /etc/logrotate.conf और /etc/logrotate.d के तहत फ़ाइलों द्वारा नियंत्रित किया जाता है।

0

एक उपनिर्देशिका में लॉग डाल करने के लिए के रूप में WiseTechi के जवाब का उल्लेख है "लकड़हारा" कमांड

http://linux.die.net/man/1/logger

+2

लॉगर किसी भी अन्य कार्यक्रम के समान अनुमति प्रतिबंधों से बंधे हैं। लॉगर का उपयोग करने से पहले आपको अभी भी उन्हें ठीक करने की आवश्यकता है। – pavon

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