मैं गैर-रूट खाते से रूट एक्शन कैसे करूं?


15

मैं php-script से सेवाओं को पुनः आरंभ करने में सक्षम होना चाहता हूं। www-user खाते के अंतर्गत चल रहा है।

इन कार्यों को करने का पसंदीदा तरीका क्या है?

मुझे लगता है कि मैं क्रोन कमांड के साथ एक फ़ाइल बना सकता हूं, जिसे CRON द्वारा पढ़ा जा सकता है, लेकिन समाधान में खुजली होती है।

मैं जो सोच रहा हूं वह एक छोटी सेवा है, जो रूट के तहत चल रही है, पूर्वनिर्धारित "विधियों" की अनुमति देता है ताकि मनमाने ढंग से रूट क्रियाओं को निष्पादित नहीं किया जा सके।

इसके लिए कोई उपकरण?


@MadHatter, मोना लिसा अपने अभिवादन; ;-)
user65297

जवाबों:


27

आप पहिया को सुदृढ़ कर सकते हैं, लेकिन ईमानदारी से, मैं इसके लिए पासवर्ड रहित sudo का उपयोग करता हूं। उदाहरण के लिए, मेरी निगरानी प्रणाली को हार्डवेयर RAID की जांच करने के लिए कमांड चलाने में सक्षम होना चाहिए। इसके लिए रूट विशेषाधिकार की आवश्यकता होती है, लेकिन मैं पूरे मॉनिटरिंग सिस्टम को रूट के रूप में चलाना नहीं चाहता, इसलिए इसके बजाय मेरे पास sudoersएक लाइन है जो कहती है

nagios  ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid

और फिर कमांड sudo /usr/lib/nagios/plugins/check_md_raidको निगरानी उपयोगकर्ता के रूप में चलाएं , जब मुझे RAID की जांच करने की आवश्यकता होती है।

आप एक sudoers लाइन है कि कहा जा सकता है

www-user    ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice

फिर php निष्पादित करें sudo /etc/rc.d/init.d/myservice restart


2
यह IMO जाने का तरीका है। मैंने एक समान कार्य के लिए इस प्रक्रिया का उपयोग किया। यह 3 साल से अधिक समय से उत्पादन में है। कुछ भी कभी भी विफल नहीं हुआ है और जब तक आप अपने एप्लिकेशन लॉजिक के साथ इसे ठीक से ट्रिगर करने वाले PHP कोड की सुरक्षा करते हैं, तब तक सुरक्षा जोखिम लगभग न के बराबर होता है।
एंड्रयू एनस्ले

1
धन्यवाद, sudoers मेरे लिए नया और लक्ष्य पर धमाका। @ और, अतिरिक्त जानकारी के लिए धन्यवाद।
user65297

1
user65927, मुझे माफ़ करें अगर यह आपको खबर नहीं है, लेकिन स्थानीय शिष्टाचार यह है कि जब आपके पास किसी प्रश्न का संतोषजनक उत्तर होता है तो आप उसके बगल में टिक आउटलाइन पर क्लिक करके इसे स्वीकार करते हैं।
मध्याह्न

1
आपको अपनी sudoers फ़ाइल में लाइन "डिफ़ॉल्‍ट आवश्‍यकता" पर टिप्‍पणी करने की आवश्‍यकता हो सकती है। इस कदम ने मुझे कुछ समय दिया है। (उदा। "डिफॉल्ट्स रिक्वायरिटी" को "# डिफॉल्ट्स रिक्विट्टी" में बदलें)
स्टीवे.लिप्ट

6

सुडो पर एक नज़र डालें : यह उन कार्यों को निर्दिष्ट करने की अनुमति देता है जो किसी अन्य उपयोगकर्ता (आपके मामले में मूल) के रूप में किया जा सकता है।

आप उदाहरण के लिए अपने को जोड़ सकते हैं /etc/sudoers(फ़ाइल को सीधे उपयोग न करें visudo)

www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction

man sudoविवरण और फ़ाइल के सिंटैक्स के लिए देखें


2
जब आप /etc/sudoersफ़ाइल को संपादित करते हैं तो बहुत सावधान रहें । अगर यह किसी भी तरह से वाक्य-रचना में गलत है, तो इसे वापस बदलना एक बुरा सपना है। c / c आपको sudoइसमें वापस जाने की आवश्यकता है , लेकिन आप सिर्फ sudo मिटा सकते हैं। आप एक बचाव सीडी / डीवीडी का उपयोग करने और विभाजन को मैन्युअल रूप से माउंट करने के लिए समाप्त होते हैं।
PUK

1
@ पीयूके वास्तव में shudders को संपादित करने के लिए आपको रूट एक्सेस की आवश्यकता होती है और यदि फ़ाइल क्षतिग्रस्त हो जाती है तो आप रूट के रूप में लॉग इन कर सकते हैं और फिर इसे पुनर्स्थापित कर सकते हैं (बैकअप प्रतिलिपि से) या मैन्युअल रूप से इसे ठीक कर सकते हैं। visudo लिखने से पहले फाइल पर sanity check भी करता है।
मट्टियो

क्या है shudders? यह सच है कि दृश्यता में पवित्रता की जाँच होती है, लेकिन नुकसान होने के बाद वे मदद नहीं करते हैं: P
puk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.