रूट के बजाय उपयोगकर्ता के रूप में rc.local से स्क्रिप्ट निष्पादित करें


26

जब भी मेरा सर्वर स्टार्ट होता है, मैं हर बार स्क्रिप्ट निष्पादित करना चाहता हूं। समस्या यह है कि मुझे स्क्रिप्ट को निष्पादित करने के लिए एक निश्चित उपयोगकर्ता होने की आवश्यकता है, अगर मैं इसे करने की कोशिश करता हूं तो रूट के रूप में यह कुछ पैकेज (जैसे रूबी) नहीं पा सकता है।

मैं xxx user01 में बदलने की कोशिश करता हूं।

sudo su user01
/etc/init.d/script start

हालांकि यह काम नहीं करता है।


अपनी init स्क्रिप्ट पोस्ट करें?
क्वांटा

क्या आपके पास कुछ लॉग हैं?
डोम

आप केवल suआरसी स्क्रिप्ट में उपयोग क्यों नहीं करते हैं ?
Mat

जवाबों:


30

sudo su user01एक स्क्रिप्ट में चलाने का मतलब यह नहीं है कि परिणामी शेल में निम्नलिखित कमांड भेजे जाते हैं। वास्तव में, इसका अर्थ है कि उपयोगकर्ता के रूप में एक नया शेल खोल दिया गया है, जो कभी भी बाहर नहीं निकलता है!

दो चीज़ें:

  • आप किसी अन्य उपयोगकर्ता के रूप में कमांड को निष्पादित कर सकते हैं या तो -c 'command...'su, जैसे तर्क पास करके su user01 -c '/etc/init.d/script start'
  • ऐसी सेवा शुरू करना जो rc.local से /etc/init.d का उपयोग करती है, वह सही काम नहीं है। आप अपने वितरण उपकरण, जैसे chkconfigया का उपयोग करके स्टार्टअप पर सेवा को सक्षम करना चाहते हैं update-rc.d। आप /etc/init.d में ऐसी नौकरियां भी नहीं चाहते हैं जिन्हें शुरू नहीं किया जाना चाहिए root। नौकरी खुद को दूसरे उपयोगकर्ता खाते में कांटा करने के लिए स्वतंत्र महसूस कर सकती है, लेकिन रूट द्वारा लागू किया जाना चाहिए।


4

आप बस sudo के माध्यम से इस तरह कमांड चला सकते हैं:

sudo -H -u user01 /etc/init.d/script start

वह उपयोगकर्ता के लिए गृह पर्यावरण चर सेट करता है

-u के रूप में चलाने के लिए उपयोगकर्ता नाम निर्दिष्ट करता है


0

निश्चित रूप से आप आवश्यकता के कारण सूडो के साथ उस स्क्रिप्ट को नहीं चला सकते हैं (यह उल्लेख करता है कि उपयोगकर्ताओं को लॉग इन करना होगा) sudoers में। आप अक्षम कर सकते हैं, जो कुछ हद तक जोखिम भरा है

इसके अलावा रनसाइड नामक एक पुराना उपकरण है: http://freecode.com/projects/runsuid

HTH

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.