2012-11-08 16 views
6

फैब्रिक के साथ, this documentation के अनुसार, आप एक मनमाना शेल कमांड एक fabfile इस तरह बिना चला सकते हैं:पासवर्ड टाइप किए बिना मैं फैब्रिक मनमानी सूडो कमांड कैसे चला सकता हूं?

fab -H host1,host2 -- echo 'hello, world!' 

तुम भी उसी तरह से sudo कमांड चलाने कर सकते हैं, लेकिन आप sudo पासवर्ड के लिए प्रेरित किया जाएगा सूची में हर मेजबान के लिए।

क्या प्रत्येक मेजबान के लिए sudo पासवर्ड टाइप करने से बचने का कोई तरीका है, फ़ैब्रिक फ़ंक्शन sudo() काम करना चाहिए?

+0

मूल पोस्टर पूछ रहा है कि प्रत्येक होस्ट के लिए सुडो पासवर्ड के लिए संकेत दिए बिना मैं निम्नलिखित कैसे कर सकता हूं: 'fab -H host0, host1, host2 - sudo/root/bin/my_script_that_must_be_run_as_root.sh'। मुझे पता है कि ऐसा करने के लिए एक fabfile कैसे लिखना है, लेकिन मैं यह जानना चाहता हूं कि इसे एड-हाक कमांड के रूप में कैसे करना है। आईआई विकल्प इस मामले में काम नहीं कर रहा है। मैं फैब्रिक 1.6.0 के साथ परीक्षण कर रहा हूँ। – Carl

उत्तर

2

बस निम्नलिखित पंक्तियों को आदि/सूडोर्स में जोड़ें जहां myusername इच्छित उपयोगकर्ता होना चाहिए जो सूडो चलाएगा। आपको निम्नलिखित करने के सुरक्षा प्रभावों को समझना चाहिए। आप उन आदेशों को सीमित करने के लिए नीचे दिए गए विकल्पों को प्रतिबंधित भी कर सकते हैं जिन्हें उपयोगकर्ता बिना पासवर्ड के स्यूडो कर सकता है।

myusername ALL=(ALL) NOPASSWD: ALL 
0

आप एसएसएच कुंजी-फ़ाइल के खिलाफ एक पैम-प्रमाणीकरण पर भी विचार कर सकते हैं। एक अच्छा प्राइमर यह ब्लॉग होगा- entry। इस तरह आपको सुरक्षा समझौता नहीं करना पड़ेगा। आप अपने रिमोट-अकाउंट में सूडो-ऑपरेशंस से पहले कीफाइल को कॉपी भी कर सकते हैं मानते हैं कि आपके पास एक योग्य खाता है। :-)

1

आप env.password सेट कपड़े जादू या ...

करते हैं करने के लिए कर सकते हैं ... आप एक से अधिक मशीनों के लिए पासवर्ड का उपयोग कर सकते हैं: https://stackoverflow.com/a/5568219/552671

:

from fabric import env 
env.hosts = ['[email protected]:port1', '[email protected]'] 
env.passwords = {'[email protected]:port1': 'password1', '[email protected]': 'password2'} 

इस उत्तर देखें

संबंधित मुद्दे