पासवर्ड के बिना सुडो निष्पादित करें?

इससे प्रेरित होकर प्रश्न....

मैं 12.04 के साथ अपने सिस्टम का उपयोग करने वाला एकमात्र व्यक्ति हूं ।
हर बार जब मैं एक मुद्दा sudo आदेश; सिस्टम उपयोगकर्ता पासवर्ड मांगता है (जो अपने तरीके से अच्छा है) ।
लेकिन मैं सोच रहा था, सक्रिय करने के बिना जड़ खाता; मैं सुडो कमांड को कैसे निष्पादित कर सकता हूं जो उपयोगकर्ता पासवर्ड को प्रमाणित करने के लिए नहीं पूछेगा ।

नोट: मैं पासवर्ड के माध्यम से प्रमाणित किए बिना सुडो कमांड निष्पादित करना चाहता हूं; केवल जब वे टर्मिनल के माध्यम से निष्पादित होते हैं ।
मैं 'उबंटू सॉफ्टवेयर सेंटर' का उपयोग करते समय या ड्रैग-ड्रॉप द्वारा बैश स्क्रिप्ट निष्पादित करते समय अन्य कार्यों से सुरक्षा की इस अतिरिक्त परत को हटाना नहीं चाहता something.sh टर्मिनल पर फाइल करें ।

आप कॉन्फ़िगर कर सकते हैं sudo अपना पासवर्ड कभी न मांगें।

एक टर्मिनल विंडो खोलें और टाइप करें:

sudo visudo

फ़ाइल के निचले भाग में, निम्न पंक्ति जोड़ें:

$USER ALL=(ALL) NOPASSWD: ALL

जहां $USER क्या आपका उपयोगकर्ता नाम आपके सिस्टम पर है । सूडर्स फ़ाइल को सहेजें और बंद करें (यदि आपने अपना डिफ़ॉल्ट टर्मिनल संपादक नहीं बदला है (यदि आपके पास है तो आपको पता चल जाएगा), दबाएं Ctl + x बाहर निकलने के लिए nano और यह आपको बचाने के लिए संकेत देगा) ।

उबंटू 19.04 के रूप में, फ़ाइल को अब कुछ इस तरह दिखना चाहिए

## This file MUST be edited with the 'visudo' command as root.## Please consider adding local content in /etc/sudoers.d/ instead of# directly modifying this file.## See the man page for details on how to write a sudoers file.#Defaults    env_resetDefaults    mail_badpassDefaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"# Host alias specification# User alias specification# Cmnd alias specification# User privilege specificationroot    ALL=(ALL:ALL) ALL# Members of the admin group may gain root privileges%admin ALL=(ALL) ALL# Allow members of group sudo to execute any command%sudo   ALL=(ALL:ALL) ALL# See sudoers(5) for more information on "#include" directives:#includedir /etc/sudoers.dYOUR_USERNAME_HERE ALL=(ALL) NOPASSWD: ALL

इसके बाद आप टाइप कर सकते हैं sudo <whatever you want> पासवर्ड के लिए संकेत दिए बिना टर्मिनल विंडो में ।

यह केवल लागू होता है, का उपयोग करने के लिए sudo टर्मिनल में कमांड। यदि आप (उदाहरण के लिए) सॉफ़्टवेयर केंद्र से पैकेज स्थापित करने का प्रयास करते हैं तो भी आपको अपने पासवर्ड के लिए संकेत दिया जाएगा

sudo -i यदि आप अपने सिस्टम (या अन्य सिस्टम) में संशोधन करते समय हर 10 मिनट में पासवर्ड टाइप नहीं करना चाहते हैं तो जाने का तरीका है, और आप किसी भी सिस्टम फाइल को संशोधित नहीं करना चाहते हैं ।

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

व्यक्तिगत (या समूह) अनुमतियां देने का पसंदीदा तरीका फाइलों को जोड़ना होगा /etc/sudoers.d

यह स्थानीय परिवर्तनों को डिफ़ॉल्ट नीति से अलग करता है और वितरण सुडोर्स फ़ाइल परिवर्तन के मामले में समय बचाता है ।

वर्तमान में लॉग इन किए गए उपयोगकर्ता को एक सूडर के रूप में sudo उन्हें पासवर्ड के लिए संकेत न दें, उपयोग करें

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER

यह नामक एक फ़ाइल बनाएगा /etc/sudoers.d/$USER (जहां $USER उपयोगकर्ता का उपयोगकर्ता नाम है जिसे आप उस कमांड को चलाते समय लॉग इन किया गया था), जिससे यह स्पष्ट हो जाता है कि किन उपयोगकर्ताओं को अनुमति दी गई है ।

यदि आप एक अलग उपयोगकर्ता के लिए ऐसा करना चाहते हैं, तो बस दोनों उदाहरणों को बदलें $USER उपरोक्त कमांड में कुछ अन्य उपयोगकर्ता नाम के साथ ।

echo "otheruser ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/otheruser

इसी तरह, एक फ़ाइल का उपयोग कई निर्देशों को प्रबंधित करने के लिए किया जा सकता है:

echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/local

देखें /etc/sudoers.d/README और man sudoers अधिक जानकारी के लिए.

रूट सूडो टाइमआउट ऐसा करने का सबसे आसान और सुरक्षित तरीका है । मैं सभी उदाहरण दूंगा लेकिन चेतावनी दी जानी चाहिए कि यह किसी भी तरह से बहुत जोखिम भरा है, हालांकि यह तरीका अधिक सुरक्षित है:

sudo visudo

अब आप अपने सिस्टम पर सबसे महत्वपूर्ण फाइलों में से एक को संपादित करने वाले एक सुपर उपयोगकर्ता हैं । कोई तनाव नहीं!

(छठी विशिष्ट निर्देशों के साथ नोट किया गया (चतुर्थ!). यदि आप नैनो का उपयोग कर रहे हैं तो इन्हें अनदेखा करें । )

तीर कुंजी का प्रयोग करने के लिए के अंत में ले जाएँ Defaults रेखा।

(चतुर्थ!) वर्तमान लाइन के अंत में स्थानांतरित करने और संपादन मोड दर्ज करने के लिए ए (पूंजी और उद्धरण;ए और उद्धरण;) कुंजी दबाएं (लाइन पर अंतिम वर्ण के बाद संलग्न करें) ।

अब टाइप करें:

,timestamp_timeout=X

जहां एक्स मिनटों में टाइमआउट समाप्ति है । यदि आप 0 निर्दिष्ट करते हैं तो आपसे हमेशा पासवर्ड पूछा जाएगा । यदि आप एक नकारात्मक मान निर्दिष्ट करते हैं, तो टाइमआउट कभी समाप्त नहीं होगा । जैसे । Defaults env_reset,timestamp_timeout=5.

(चतुर्थ!) कमांड मोड पर लौटने के लिए एस्केप मारो । अब, यदि आप अपने संपादन से खुश हैं, तो टाइप करें :w Enter फ़ाइल लिखने के लिए और :q Enter यदि आपने कोई गलती की है, तो शायद सबसे आसान तरीका शुरू से फिर से करना है, बिना बचत के बाहर निकलना (हिट Escape कमांड मोड में प्रवेश करने के लिए) और फिर टाइप करें :क्यू! Enter.

मारो Ctrl+X, तब फिर Y, तब फिर Enter अपनी फ़ाइल को सहेजने और नैनो से बाहर निकलने के लिए ।

आप अतिरिक्त जानकारी के लिए सूडर्स और वीआई मैनुअल पेज पढ़ना चाह सकते हैं ।

man sudoersman vi

का उपयोग करके टाइमआउट मान रीसेट करें:

sudo -k

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

सुडोर्स फ़ाइल संपादित करें

एक टर्मिनल विंडो खोलें। में टाइप करें sudo visudo. फ़ाइल के अंत में निम्न पंक्ति जोड़ें (यदि अंत में नहीं तो इसे बाद की प्रविष्टियों द्वारा शून्य किया जा सकता है):

<username> ALL=NOPASSWD: ALL

बदलें <username> अपने उपयोगकर्ता नाम के साथ (बिना <>). यह मान रहा है कि उबंटू ने आपके उपयोगकर्ता नाम के समान नाम वाला एक समूह बनाया है, जो विशिष्ट है । आप वैकल्पिक रूप से समूह उपयोगकर्ताओं या किसी अन्य ऐसे समूह का उपयोग कर सकते हैं जिसमें आप हैं । बस सुनिश्चित करें कि आप उस समूह में हैं । यह सिस्टम -&जीटी; प्रशासन -&जीटी; उपयोगकर्ताओं और समूहों पर जाकर जाँच की जा सकती है ।

उदाहरण:

michael ALL=NOPASSWD: ALL

में टाइप करें ^एक्स (Ctrl+X) बाहर निकलने के लिए । यह फ़ाइल को सहेजने के विकल्प के लिए संकेत देना चाहिए, सहेजने के लिए वाई में टाइप करें ।

लॉग आउट करें, और फिर वापस लॉग इन करें । यह अब आपको पासवर्ड के लिए संकेत दिए बिना सुडो कमांड चलाने की अनुमति देनी चाहिए ।

रूट खाता

रूट खाते को सक्षम करना

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

sudo -i

हालांकि, अगर आप चाहिए रूट लॉगिन सक्षम करें, आप इसे इस तरह कर सकते हैं:

sudo passwd root

अपने रूट खाते को फिर से अक्षम करना

यदि किसी कारण से आपने अपना रूट खाता सक्षम किया है और इसे फिर से अक्षम करना चाहते हैं, तो टर्मिनल में निम्न कमांड का उपयोग करें:

sudo passwd -dl root

सिस्टम-वाइड ग्रुप सुडो

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

लॉग आउट करें, और फिर वापस अंदर ।

सूडो टाइमआउट रीसेट करें

आप यह सुनिश्चित कर सकते हैं कि सूडो अगली बार चलाकर पासवर्ड मांगे:

sudo -k

बेशक आप जो करना चाहते हैं वह अनुशंसित नहीं है । थोड़ी देर बाद, हालांकि प्रवेश sudo इतना स्वचालित हो जाता है कि इसकी उपयोगिता कम हो जाती है ।

एक और तरीका यह है कि आप अपने सूडर्स फ़ाइल को छोड़ दें और, अपने सौ सौ सर्वरों के लिए कुछ जटिल करते हुए, दर्ज करें sudo bash . यह आपको एक शेल देगा जिसे रूट के रूप में प्रमाणित किया जाएगा जब तक आप इसे बाहर नहीं निकालते ।

वर्तमान उपयोगकर्ता के लिए सुडो संकेतों को हटाने के लिए अच्छा एक-लाइनर

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'

यह एक पंक्ति समाधान है जो फ़ाइलों की अनुमतियों को भी बदलता है जैसा कि कहा गया है /etc/sudoers.d/README:

sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' && sudo chmod 440 /etc/sudoers.d/$(logname)

एक लाइनर

sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'

से सुपर उपयोगकर्ता एक अच्छा जवाब आता है:

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

echo <password> | sudo -S <command>

बदलें <password> अपने पासवर्ड के साथ ।

  • @अपटेरिक्स विचार पर विस्तार ।

  • इस तरह मैंने सीआईसीडी पाइपलाइन में उपयोग के लिए एक अल्पकालिक डॉकर छवि में गैर-रूट, पासवर्ड रहित उपयोगकर्ता को लागू किया है:

RUN \    groupadd -g 999 foo && useradd -u 999 -g foo -G sudo -m -s /bin/bash foo && \    sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \    sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \    sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' && \    echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \    echo "Customized the sudoers file for passwordless access to the foo user!" && \    echo "foo user:";  su - foo -c id

तो आप केवल टर्मिनल में पासवर्ड के लिए और अन्य चीजों के लिए नहीं, या दूसरे तरीके से पूछना चाहते हैं?! दोनों तरीकों से, मुझे लगता है कि यह एक उच्च सुरक्षा उल्लंघन है

निश्चित रूप से आप टाइमआउट को लम्बा खींच सकते हैं । साथ ही, यदि आप अक्सर नए सर्वर सेटअप कर रहे हैं तो आपको प्रक्रिया को स्वचालित करने के बारे में सोचना चाहिए । आपको टाइप करने के लिए भुगतान नहीं किया जाता है, आपको समस्याओं को हल करने और श*टी करने के लिए भुगतान किया जाता है ।

मैं चाहता हूं कि सिस्टम टर्मिनल में केवल पासवर्ड नहीं पूछ सकता है । … किसी अन्य उद्देश्य के लिए सिस्टम को पासवर्ड पूछना चाहिए ।

यह आवश्यकता केवल अस्थायी है, और कॉन्फ़िगर करते समय उपयोग की जानी है एन नए सर्वर स्थापित करना । . ताजा सर्वर इंस्टॉलेशन के दौरान, वास्तव में सुडो कमांड के साथ कॉन्फ़िगर करने में घंटों लगते हैं । . हर 15 मिनट में पासवर्ड जारी करना । सिरदर्द है। मैं रूट अकाउंट का इस्तेमाल नहीं करना चाहता ।

आपको चर्चा को पढ़ना होगा: root - What are the benefits of sudo over su? - Ask Ubuntu

संबंधित: बिना पासवर्ड के सुडो कमांड कैसे चलाएं?