कैसे दो मिनट के लिए sudo पासवर्ड याद रखने की अनुमति दें?


15

एक सामान्य टर्म रनिंग में bash, जब मैं एक sudo ...कमांड चलाता हूं , तो बैश कुछ समय के लिए मेरा पासवर्ड याद रखेगा। यह पैकेज प्रबंधन कार्य को आसान बनाता है।

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

sudo apt-get update
# password ......
sudo apt-get install turing-brain
# execute without requiring password again.

क्या एस्कॉल में इसे पूरा करना संभव है?

(मुझे पता है termया ansi-termEmacs में ऐसा कर सकते हैं। लेकिन Emacs के साथ बेहतर एकीकरण है।)

जवाबों:


14

सभी चेक जो सबसे पहले sudo अपने eshell सत्र में निष्पादित किया जाता है। यह आपके सिस्टम का सुडोल हो सकता है:

$ which sudo
/path/to/system/wide/sudo
$ which *sudo
/path/to/system/wide/sudo

या एशेल का सुडो:

$ which sudo
sudo is a compiled Lisp function in `em-tramp.el'
$ which eshell/sudo
eshell/sudo is a compiled Lisp function in `em-tramp.el'

Eshell's sudo TRAMP की su या sudo विधि का उपयोग करता है। ये कमांड एशेल-ट्रम्प मॉड्यूल में हैं, जो डिफ़ॉल्ट रूप से अक्षम है।

मैं eshell के sudo केस को कवर करूंगा, क्योंकि यह Emacs के लिए आंतरिक है और यह आपके OS डिस्ट्रो पर निर्भर नहीं करता है:

  1. लोड एशेल-ट्रम्प मॉड्यूल:

    (require 'em-tramp) ; to load eshell’s sudo
    
  2. एसशेल के सुडो पर स्विच करें

    • अंतर्निहित आदेशों को प्राथमिकता देकर

      (setq eshell-prefer-lisp-functions t)
      

      ऐसा लगता है कि Emacs 24.4 में हमें सेट करना होगा

      (setq eshell-prefer-lisp-variables t)
      
    • एक उपनाम बनाकर (एस्के में स्निपेट निष्पादित करें)

      alias sudo 'eshell/sudo $*'
      

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

  3. अंत में eshell के sudo (और TRAMP) के लिए पासवर्ड कैशिंग सक्षम करें:

    (setq password-cache t) ; enable password caching
    (setq password-cache-expiry 3600) ; for one hour (time in secs)
    

PS यदि आपने अपने प्रॉम्प्ट को एशेल-प्रॉम्प्ट-फंक्शन के साथ बदल दिया है , तो उसके अनुसार प्रॉम्प्ट रेगेक्स एशेल-प्रॉम्प्ट-रेग्जिक्स को समायोजित करना न भूलें । गलत प्रॉम्प्ट रेगेक्स कुछ एसेल कार्यक्षमता को तोड़ सकता है - पासवर्ड डिटेक्शन सहित।


इन निर्देशों का पालन करने के बाद, which sudoअभी भी /usr/bin/sudoमेरे सिस्टम पर प्रदर्शित होता है।
बोकापार्टा-आईटी

क्या आपने इसे एक ताजा एशेल बफर के साथ परीक्षण किया था ? IIRC वर्तमान एशेल सत्र में बदलाव नहीं होंगे।
kmicu

हाँ। मैं emacs डेमॉन को पुनः आरंभ करता हूं और एक नया क्लाइंट खोलता हूं।
बोकापार्टा-आईटी

उथले परीक्षण के बाद मैं देखता हूं कि (सेट एसशेल-पसंद-लिस्प- वैरिएबल टी) एमएसीएस 24.4 में आवश्यक है। @ Boccaperta-IT क्या आप पुष्टि कर सकते हैं कि यह आपके लिए काम करता है?
kmicu

काम नहीं कर रहा है, फिर भी /usr/bin/sudo(मैं 25.0.50.1 Emacs का उपयोग कर रहा हूँ, हालांकि)
Boccaperta-IT

4

एक उपनाम मैं जोड़ने के लिए किया था बनाने के बिना Emacs 26 (शायद Emacs 25 के लिए एक ही) में काम कर sudo प्राप्त करने के लिए eshell-trampकरने के लिए eshell-modules-list

(add-to-list 'eshell-modules-list 'eshell-tramp)

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