जेनकिंस त्रुटि से बचने के लिए सर्वोत्तम प्रथाएँ: सुडो: कोई भी मौजूद नहीं है और कोई भी पूछ-ताछ कार्यक्रम निर्दिष्ट नहीं है


5

जेनकींस से किसी भी sudo कमांड को चलाने पर मुझे निम्नलिखित त्रुटि मिलती है:

sudo: कोई tty मौजूद नहीं है और कोई askpass प्रोग्राम निर्दिष्ट नहीं है

मैं समझता हूं कि मैं NOPASSWDअपनी /etc/sudoersफ़ाइल में एक प्रविष्टि जोड़कर इसे हल कर सकता हूं जो उपयोगकर्ता के जेनकिंस को पासवर्ड की आवश्यकता के बिना कमांड चलाने की अनुमति देगा । मैं इस तरह एक प्रविष्टि जोड़ सकता हूं:

%jenkins ALL=(ALL)NOPASSWD:/home/vts_share/test/sudotest.sh

... लेकिन इससे निम्न समस्या होती है: sudoers फ़ाइल में पूर्ण पथ निर्दिष्ट करने से कैसे बचें?

मैं इस तरह एक प्रविष्टि जोड़ सकता हूं:

%jenkins ALL=NOPASSWD: ALL

... लेकिन यह उपयोगकर्ता जेनकिन्स को सभी कमांड के लिए पासवर्ड प्रॉम्प्ट से बचने की अनुमति देता है , जो थोड़ा असुरक्षित लगता है। मैं बस उत्सुक हूं कि मेरे विकल्प यहां क्या हैं, और अगर कोई सर्वोत्तम प्रथा है तो मुझे विचार करना चाहिए।


2
यह मुझे लगता है कि आपकी समस्या (तों) वास्तव में उन साधनों को नहीं समझ रही है जिनसे आप काम करने की कोशिश कर रहे हैं। अब एक कदम वापस लेने और कुछ यूनिक्स बुनियादी बातों को सीखने और सूडो काम करने के तरीके को पढ़ने के लिए एक उपयुक्त समय होगा।
user619714

जवाबों:


5

मेरा मानना ​​है कि आप इस विकल्प की तलाश कर रहे हैं man sudoers

   requiretty      If set, sudo will only run when the user is logged in to a real tty.  When this flag     
                   is set, sudo can only be run from a login session and not via other means such as        
                   cron(8) or cgi-bin scripts.  This flag is off by default.     

यहाँ सबसे सुरक्षित से कम से कम सुरक्षित करने के क्रम में मेरी सिफारिशें हैं:

1) जेनकींस सुडो को बिल्कुल न दें। यदि आप पैकेज बनाता है, तो देखें fakeroot। jenkins को सॉफ्टवेयर बनाने के लिए रूट की आवश्यकता नहीं होती है।

2) यदि आप कर जेनकींस जरूरत जड़ है करने के लिए, या तो sudoers साथ sudo योग्यता प्रतिबंधित करने पर विचार Cmndविकल्प।

3) डिस्पोजेबल वीएम पर जेनकींस चलाएं। यदि कोई इसे जड़ देता है, तो इसका पुनर्निर्माण करें और अपनी सुरक्षा विकल्पों को फिर से निकालें। मैं भी इंट्रानेट सेवा के रूप में जेनकींस चलाने की सलाह दूंगा, केवल लैन या वीपीएन के माध्यम से सुलभ। प्रमाणीकरण शामिल करने के लिए मत भूलना!


5

अगर आप एक स्क्रिप्ट के भाग के रूप में एक जेनो उपयोगकर्ता के रूप में एक sudo चलाते हैं, तो आपको दो चीजों की आवश्यकता होती है।

  1. कमांड की सटीक कॉपी .. जैसे / बिन / chown www-data / var / www

  2. सुडो-एन सटीक कमान

अगर यह एक NOPASSWD है, तो यह एक संकेत के लिए पूछना नहीं है।

यह मुझे एक स्क्रिप्ट में सूडो चलाने के लिए तय करता है जिसे जेनकिंस कहते हैं

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