बैश स्क्रिप्ट निष्पादित करने के लिए www-root की अनुमति देने का सही तरीका क्या है?


0

मेरे पास www-data के साथ एक विशिष्ट LAMP सर्वर सेटअप (Ubuntu 16) है: Apache के लिए www-data सेटअप।

मेरे पास एक स्क्रिप्ट है जिसे रूट के रूप में नहीं चलाया जा सकता है लेकिन इसे www-data के रूप में चलाने की आवश्यकता है। स्क्रिप्ट चलने की सलाह देती है sudo -u www-root -i -- <command>लेकिन जब मैं ऐसा करता हूं तो मुझे त्रुटि मिलती है:

This account is currently not available.

मैं सुरक्षित रूप से www-data उपयोगकर्ता को कमांड चलाने की अनुमति कैसे दे सकता हूं, या मैं कैसे वर्तमान उपयोगकर्ता को कमांड को निष्पादित करने की अनुमति दूंगा, अगर यह एक बेहतर दिशा है।

नोट: विचाराधीन स्क्रिप्ट WP-CLI है, जो एक - मूल-रूट ध्वज को बाध्य करता है, लेकिन सुरक्षा कारणों के कारण इसके खिलाफ सलाह देता है

जवाबों:


1

जब आप -isudo के विकल्प का उपयोग करते हैं , तो इसका मतलब है कि sudo उस उपयोगकर्ता के लिए असाइन किए गए लॉगिन शेल और वातावरण का उपयोग करने का प्रयास करेगा। यह www-dataखाते के लिए एक समस्या होने जा रहा है क्योंकि उस खाते में आमतौर पर एक अक्षम शेल होने वाला है।

root@srv:# getent passwd www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

यदि आपको वास्तव में उस उपयोगकर्ता के पर्यावरण / शेल की आवश्यकता है तो आपको यह पता लगाने की आवश्यकता है। आपको -iविकल्प की आवश्यकता नहीं है , और बस इसके बिना कमांड चला सकते हैं। यह कमांड को उसी प्रकार के शेल के साथ चलाएगा जैसा उपयोगकर्ता कमांड को निष्पादित कर रहा है।

इसलिए इसकी जगह इसका इस्तेमाल करें।

sudo -u www-root <command>

यदि किसी कारण से आपको वास्तव में करने की आवश्यकता है -i, तो आपको वास्तव में उस खाते को एक शेल (/ बिन / श, / बिन / बाश, या अपना पसंदीदा) देने की आवश्यकता होगी।

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