सवाल एक कमांड लाइन में पासवर्ड के साथ sudo?


व्यस्त दिनों में, मैं दौड़ना चाहता हूं

$ ./configure && make && sudo make install && halt

रात को और बिस्तर पर जाओ, उम्मीद है कि एप्लिकेशन स्वचालित रूप से स्थापित हो जाएगा। लेकिन अगले दिन मैं जो स्क्रीन देखता हूं वह स्क्रीन है जहां सुडो मुझे पासवर्ड के लिए पूछता है। तो मैं एक कमांड लाइन में पासवर्ड के साथ सुडो कैसे चला सकता हूं, या ऐसा करने के लिए कोई और तरीका है?


90
2017-11-09 02:37


मूल


आप की जरूरत है halt रूट के रूप में चलाने के लिए। - Keith Thompson
नहीं करता है sudo 15 मिनट का टाइमआउट है? क्या आप दौड़ नहीं सकते थे, कहो, sudo ls या कुछ समान, अपना पासवर्ड दर्ज करें, और उसके बाद उपरोक्त आदेश चलाएं sudo विशेषाधिकार अभी भी सक्रिय हैं? (मैं इस समय इस पर परीक्षण नहीं कर सकता, अन्यथा मैं इसे एक उत्तर के रूप में पोस्ट करूंगा।) - Matt
समय पर sudo विन्यास योग्य है। सुरक्षा-जागरूक लोग (उर्फ परावर्तक, मेरे जैसे) इसे शून्य पर सेट करें ... :-) - dda
और देखें सुडो पासवर्ड के लिए संकेत दें और प्रोग्रामिंग रूप से बैश स्क्रिप्ट में विशेषाधिकार बढ़ाएं?, सूडो की आवश्यकता वाले बैश स्क्रिप्ट में केवल एक बार पासवर्ड कैसे दर्ज करें, एक स्क्रिप्ट के भीतर से रूट विशेषाधिकार का अनुरोध करें, पासवर्ड के लिए कोई संकेत नहीं के साथ स्क्रिप्ट में एक सूडो उपयोगकर्ता बनाएँ ..., सुडो पासवर्ड के लिए उपयोगकर्ता को कैसे संकेत दें?, आदि - jww


जवाब:


हाँ, का प्रयोग करें -S स्विच जो एसटीडीआईएन से पासवर्ड पढ़ता है:

$echo <password> | sudo -S <command>

तो आपके मामले के लिए यह इस तरह दिखेगा:

$./configure && make && echo <password> | sudo -S make install && halt

बेशक, प्रतिस्थापित करें <password> आपके पासवर्ड के साथ


130
2017-11-09 02:47



जाहिर है, अगर कोई शैल इतिहास में पासवर्ड देखकर किसी और का खतरा है तो कोई इसे नहीं चलाएगा। - Brett Daniel
रिमोट होस्ट पर विशेषाधिकार प्राप्त आदेश चलाने के त्वरित तरीकों की तलाश में है और यह धन्यवाद काम करता है। - nelaaro
यदि आपने 'echo <password> | का उपयोग करने का निर्णय लिया है sudo -S 'विकल्प, कमांड इतिहास पर पासवर्ड उजागर करने से बचने के लिए, स्पेस वर्ण के साथ कमांड प्रारंभ करें। बेशक, सबसे अच्छा विकल्प पासवर्ड को सुरक्षित फ़ाइल से पाइप करना है। - user224306
यदि आप $ VARIABLE में पासवर्ड रखते हैं तो आप इसका उपयोग करना चाहेंगे (उदाहरण के लिए आप सोप्स के साथ प्रावधान कर सकते हैं) - Natim
9 साल बाद और अभी भी एक आकर्षण की तरह काम करता है :) - WinEunuuchs2Unix


आप सुडो को भी कॉन्फ़िगर कर सकते हैं visudo पासवर्ड के बिना आपको सूडो के रूप में उपयोग करने की अनुमति देने के लिए।

User_Alias USERS = your_user
Cmnd_Alias CMDS = /usr/bin/make
USERS ALL = (ALL) NOPASSWD: CMDS

9
2017-11-09 03:03





कई अन्य समाधानों का नुकसान यह है कि वे अनावश्यक रूप से दौड़ते हैं ./configure तथा make जड़ के रूप में

यह थोड़ा उलझन में है, लेकिन यह काम करना चाहिए:

sudo sh -c "su $USER -c ./configure && su $USER -c make && make install && halt"

अनुमति देने के लिए डबल कोट्स के उपयोग पर ध्यान दें $USER (गैर रूट) खोल द्वारा विस्तारित किया जाना है।

मैं भी एक जोड़ सकता हूँ sleep 60 से पहले halt आदेश। मैंने कभी-कभी इस तरह की चीजें की हैं, कमांड को लंबे समय तक चलाने की उम्मीद है, लेकिन कुछ गलत हो जाता है और यह तुरंत समाप्त हो जाता है; sleep सिस्टम बंद होने से पहले मुझे आदेश को मारने देता है। या आप उपयोग कर सकते हैं shutdown एक समय तर्क के साथ।


9
2017-08-08 06:52





आप इसके साथ अपनी कमांड लाइन को प्रतिस्थापित कर सकते हैं:

$sudo su

$./configure && make && make install && halt

आपको तुरंत अपने पासवर्ड के लिए कहा जाएगा, तो शेष आदेश सुपरसियर के रूप में चलाए जाएंगे।


8
2017-11-09 03:14



इसका एक वैकल्पिक (और शायद पसंदीदा) संस्करण: sudo sh -c "./configure && make && make install && halt" - quack quixote
लेकिन फिर सभी जेनरेट की गई संकलित फाइलों में सुपरसुर अनुमति नहीं होगी? यह आपको बाद में नियमित उपयोगकर्ता के रूप में ./configure && चलाने से रोक देगा। - user45909
हां, उपयोगकर्ता 45 9 0 9, आप बिल्कुल सही हैं। मैंने व्यक्तिगत रूप से कभी भी मुख्य पैकेज के अपडेट को डाउनलोड करने के अलावा, /configure && को फिर से चालू नहीं किया है, लेकिन मैं संभवतः सामान्य नहीं हूं। - CarlF


इतिहास को "सुडो-एस"

$ export HISTIGNORE='*sudo -S*'

फिर सूडो को सुरक्षित रूप से अपना पासवर्ड पास करें:

$ echo "your_password" | sudo -S -k <command>

"इतिहास" का अर्थ इस आदेश को इतिहास में सहेजना नहीं है। यह स्मृति या "~ / .bash_history" फ़ाइल में इतिहास है।

उदाहरण के लिए, नीचे बिना सडो कमांड पर अपना पासवर्ड सुरक्षित रूप से पाइप कर देगा अपने पासवर्ड का इतिहास बनाए रखना

"-एस", पासवर्ड के लिए stdin का उपयोग करने का मतलब है,

"-K" का अर्थ है सूडो को मजबूर करने के लिए कैश किए गए क्रेडेंशियल्स को अनदेखा करना हमेशा पूछने के लिए। यह लगातार व्यवहार के लिए है।

$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -k whoami
$ echo "<your_password>" | sudo -S -k cat /etc/shadow
$ echo "<your_password>" | sudo -S -k bash /tmp/myscript.sh

उपर्युक्त विधि का नकारात्मक पक्ष यह है कि यदि आप इतिहास में भागने वाले आदेशों को देखना चाहते हैं तो वे वहां नहीं होंगे। एक और तरीका सुडो प्रमाणीकरण क्रेडेंशियल कैश को अपडेट करना है (डिफ़ॉल्ट 5 मिनट टाइमआउट के साथ सक्षम है), फिर सुडो को अलग से चलाएं। लेकिन इसका नकारात्मक पक्ष यह है कि आपको 5 मिनट के कैश से अवगत रहना होगा।

उदाहरण के लिए:

$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -v
$ sudo whoami
$ echo "<your_password>" | sudo -S -v
$ sudo cat /etc/shadow
$ echo "<your_password>" | sudo -S -v
$ sudo /tmp/myscript.sh

नोट: प्रत्येक कमांड से पहले मैंने एक सूडो चलाया ताकि यह सुनिश्चित किया जा सके कि सूडो कैश अपडेट हो गया है, क्योंकि डिफ़ॉल्ट 5 मिनट है। हां, व्हामी को 5 मिनट नहीं लेना चाहिए, लेकिन मुझे लगता है कि यह स्थिरता के लिए प्रत्येक कमांड से पहले भी चल सकता है। आप "निर्यात HISTIGNORE =" भी डाल सकते हैंसुडो-एस'' ~ ~ .bashrc फ़ाइल में, फिर इसे लोड करें "। ~ / .bashrc "या लॉगऑफ फिर लॉगिन करें। हालांकि, मैं इसका उपयोग स्क्रिप्टिंग उद्देश्यों के लिए कर रहा हूं, इसलिए मैं इसे सर्वोत्तम सुरक्षा प्रथाओं के लिए अपनी सभी स्क्रिप्ट के शीर्ष पर रखूंगा।" echo "" सेट करना। sudo -S -v "के बजाय एक चर के लिए भी एक अच्छा विचार हो सकता है, फिर रूट कमांड की आवश्यकता वाले प्रत्येक कमांड से पहले वैरिएबल चलाएं, जैनर की टिप्पणी देखें।" जॉन टी "की टिप्पणी में" -k "पैरामीटर भी शामिल होना चाहिए , जैसे कि आप "sko -S" को "-k" के बिना चलाते हैं और सूडो प्रमाणीकरण कैश में पहले से ही आपके क्रेडेंशियल्स हैं (और अभी भी मान्य है, डिफ़ॉल्ट सूडो प्रमाणीकरण कैश 5 मिनट है) तो बैश आपके पासवर्ड को कमांड के रूप में चलाएगा, जो कि है खराब।


5
2017-11-25 19:43



इतिहास में चीज़ों को उपलब्ध कराने पर एक छोटा सा नोट के रूप में, इसके आगे एक ही स्थान के साथ अपना आदेश चलाएं। किसी कारण से इतिहास इतिहास को अनदेखा कर देता है। - Matt Fletcher


यदि आप अधिक देखभाल करना चाहते हैं, तो आप एक स्क्रिप्ट बना सकते हैं, फ़ाइल की अनुमतियां बदल सकते हैं, इसलिए केवल रूट पढ़ और संपादित कर सकता है और फिर इसे चला सकता है।

उदाहरण:
1) एक फाइल बनाएँ:

gedit ~/.easy.install  

2) इसे पेस्ट करें और सहेजें:

./configure && make && echo <password> | sudo -S make install && halt  

3) इसे निष्पादन योग्य बनाओ:

sudo chmod +x ~/.easy.install  

4) फ़ाइल की अनुमतियों को बदलें ताकि केवल रूट इसे पढ़ और संपादित कर सके:

sudo chmod 700 ~/.easy.install  

5) भागो:

~/.easy.install  

का आनंद लें ;-)


2
2018-04-19 23:56



echo <password> अभी भी प्रक्रिया सूची में दिखाई देगा और यदि कोई सही समय पर पीएस ऑक्स के साथ भाग्यशाली हो जाता है, तो वे स्पष्ट टेक्स्ट में पासवर्ड देख सकते हैं। फ़ाइल को पासवर्ड सहेजने के लिए बेहतर है और <sudo में फ़ाइल से रीडायरेक्ट करने के लिए <का उपयोग करें। - bobpaul


आप भी यह कर सकते हैं:

sudo -S <<< "password" command

2
2018-06-09 14:15





इस तरह सूडो स्थापित करना खतरनाक है अगर कोई इस तथ्य को देखने के लिए हुआ कि सूडो को आपके खाते पर कोई पासवर्ड नहीं चाहिए। जब तक आप नहीं जानते कि आप क्या कर रहे हैं, ऐसा मत करो। मैंने अपने स्थानीय ए + प्रशिक्षण कार्यक्रम में अपने प्रयोगात्मक कंप्यूटर के साथ कई बार ऐसा किया है ... -_-

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


1
2017-11-10 03:37





नोट, मैंने पाया है कि विधि सूडो के पुराने संस्करण पर काम नहीं करती है, विशेष रूप से "सुडो संस्करण 1.6.7p5":

$ echo "<your_password>" | sudo -S -k whoami

जहां यह विधि पुराने और नए संस्करणों पर काम करती है सुडो:

$ echo "<your_password>" | sudo -S -v
$ sudo whoami

1
2017-12-08 15:18



ये है नहीं मूल प्रश्न का उत्तर। किसी लेखक से स्पष्टीकरण की आलोचना करने या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें - आप हमेशा अपनी पोस्ट पर टिप्पणी कर सकते हैं, और एक बार आपके पास पर्याप्त हो प्रतिष्ठा तुम कर पाओ गे किसी भी पोस्ट पर टिप्पणी करें। - DavidPostill♦
@ डेरेन डेहेवन: क्या आप कृपया बता सकते हैं कि यह यहां पूछे गए प्रश्न के उत्तर कैसे बनता है? - Renju Chandran chingath


निजी तौर पर मैं जॉन टी ने 9 नवंबर को दोपहर 2:47 बजे उत्तर दिया, मैंने अपने जवाब के मार्गदर्शन के अनुसार मेरा भी सुधार किया है, धन्यवाद।

अंतर यह है कि मैं चर का उपयोग करता हूं, कुछ ऐसा:

AutoSuDo=$" $echo pass | sudo -S";
# Change AutoSuDo to something else.
# Note that string starts with space,
# useful only if used as first command in line

इस तरह से मैं सूडो के बजाय आसानी से मेरा चर का उपयोग कर सकता हूं,

$AutoSuDo apt-get update;

यह कुछ लंबी स्क्रिप्ट के साथ काफी आसान आता है। मैं मुख्य रूप से दूसरों के व्यक्तिगत कंप्यूटर के लिए इनका उपयोग करता हूं, मुझे इसे बनाए रखना है।

मैं इस पर ध्यान देने की भी सिफारिश करता हूं:

  • 1 9 अप्रैल को 11:56 बजे desgua जवाब
  • यूजर 224306 टिप्पणी 14 मई '13 को 17:38 पर जॉन टी के जवाब 9 नवंबर को 2:47 बजे उत्तर दें

0
2018-06-29 20:57