मेरे पास एक शेल स्क्रिप्ट है जो एक उपयोगकर्ता बनाता है और उस उपयोगकर्ता के रूप में किसी अन्य स्क्रिप्ट को निष्पादित करता है
sudo useradd -m devops sudo passwd devops sudo adduser devops sudo su - devops -c "sh /path/to/myscript.sh"
यह स्क्रिप्ट उपयोगकर्ता बनाता है, पासवर्ड सेट करता है और उम्मीद के अनुसार sudo समूह में उपयोगकर्ता जोड़ता है।
- myscript.sh में ऐसे कमांड होते हैं जो sudo previlages का उपयोग करते हैं। (sudo apt-get update, sudo apt-get install सॉफ्टवेयर-गुण-सामान्य आदि)। और अन्य कमांड जैसे ssh-keygen, कर्ल और विग।
- एक सूडो को छोड़कर सभी कमांड को सही तरीके से निष्पादित किया जाता है और परिणामों को छोड़कर।
- लेकिन sudo वाले कमांड एरर देने से फेल हो जाते हैं "कोई टिट मौजूद नहीं है और कोई पूछ-ताछ कार्यक्रम निर्दिष्ट नहीं है"
- इस मामले में ऐसा क्यों होता है और मैं इसे कैसे दूर कर सकता हूं?
- मैंने अनजाने प्रश्नों को देखा है, लेकिन यदि मैं इस संदर्भ में स्पष्ट व्याख्या प्राप्त करूँ तो आभारी रहूँगा, धन्यवाद।
उत्तर:
जवाब के लिए 3 № 1इसे बदलने का प्रयास करें:
su - devops -c "sh /path/to/myscript.sh"
इसके साथ:
sudo -u devops -H sh -c "sh /path/to/myscript.sh"
The -c
का विकल्प su
इंटरैक्टिव मोड का समर्थन नहीं करता है:
-c, --command COMMAND
कोई आदेश निर्दिष्ट करें जिसे द्वारा लागू किया जाएगा खोल अपने -c का उपयोग कर.निष्पादित आदेश का कोई नियंत्रण टर्मिनल नहीं होगा. यह विकल्प interractive प्रोग्राम ्सजो की आवश्यकता वाले interractive programs को निष्पादित करने के लिए उपयोग नहीं किया जा सकता नियंत्रित TTY.
(man su
)
वैसे, मैं "का उपयोग नहीं होगा sudo
एक स्क्रिप्ट के भीतर हर जगह. स्क्रिप्ट बस की आवश्यकता हो सकती है root
अनुमतियाँ. स्क्रिप्ट के भीतर आप विशेषाधिकार छोड़ सकते हैं जहां उपरोक्त के माध्यम से आवश्यक sudo
आदेश।