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

कैसे करता है ubuntu उबंटू सर्वर 12.04 के लिए एडब्ल्यूएस छवियों पर उपयोगकर्ता पासवर्ड रहित है sudo सभी आदेशों के लिए जब इसके लिए कोई कॉन्फ़िगरेशन नहीं है /etc/sudoers?

मैं अमेज़ॅन पर उबंटू सर्वर 12.04 का उपयोग कर रहा हूं । मैं एक नया उपयोगकर्ता जोड़ना चाहता हूं जिसमें डिफ़ॉल्ट उबंटू उपयोगकर्ता के समान व्यवहार हो । विशेष रूप से मैं पासवर्ड रहित चाहता हूं sudo इस नए उपयोगकर्ता के लिए ।

इसलिए मैंने एक नया उपयोगकर्ता जोड़ा है और संपादित करने के लिए गया है /etc/sudoers (निश्चित रूप से विसुडो का उपयोग करना) । उस फ़ाइल को पढ़ने से यह डिफ़ॉल्ट की तरह लग रहा था ubuntu उपयोगकर्ता को यह पासवर्ड रहित हो रहा था sudo के सदस्य होने से admin समूह। इसलिए मैंने अपना नया उपयोगकर्ता इसमें जोड़ा। जो काम नहीं आया । फिर मैंने जोड़ने की कोशिश की NOPASSWD को निर्देश sudoers. जो भी काम नहीं किया ।

वैसे भी, अब मैं बस उत्सुक हूं । कैसे करता है ubuntu उपयोगकर्ता को पासवर्ड रहित विशेषाधिकार प्राप्त होते हैं यदि वे परिभाषित नहीं हैं /etc/sudoers. वह कौन सा तंत्र है जो इसकी अनुमति देता है?

ठीक है, मैंने उत्तर की खोज की है इसलिए इसे पूर्णता के लिए यहां भी रखा जा सकता है । के अंत में /etc/sudoers मैंने जो सोचा था वह सिर्फ एक टिप्पणी थी:

#includedir /etc/sudoers.d

हालाँकि इसमें वास्तव में उस निर्देशिका की सामग्री शामिल है । जिसके अंदर फाइल है /etc/sudoers.d/90-cloudimg-ubuntu. जिसमें अपेक्षित सामग्री है

# ubuntu user is default user in cloud-images.# It needs passwordless sudo functionality.ubuntu ALL=(ALL) NOPASSWD:ALL

तो यही वह जगह है जहां डिफ़ॉल्ट उबंटू उपयोगकर्ता के लिए सुडो कॉन्फ़िगरेशन रहता है ।

आपको विसुडो का उपयोग करके इस फ़ाइल को संपादित करना चाहिए । निम्न आदेश आपको विसुडो के साथ सही फ़ाइल को संपादित करने देगा ।

sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu

और एक पंक्ति जोड़ें जैसे:

aychedee ALL=(ALL) NOPASSWD:ALL

अंत में ।

मैंने पाया कि कई सर्वरों में इस व्यवहार को आसानी से दोहराने के लिए सबसे सीधी आगे की चीज निम्नलिखित थी:

sudo visudo

इस लाइन को बदलें:

# Members of the admin group may gain root privileges%admin  ALL=(ALL) ALL

इस लाइन के लिए:

# Members of the admin group may gain root privileges%admin  ALL=(ALL) NOPASSWD:ALL

और इसे स्थानांतरित करें के तहत यह लाइन:

# Allow members of group sudo to execute any command%sudo   ALL=(ALL:ALL) ALL

अब आपके पास यह होना चाहिए:

# 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"# Host alias specification# User alias specification# Cmnd alias specification# User privilege specificationroot    ALL=(ALL:ALL) ALL# Allow members of group sudo to execute any command%sudo   ALL=(ALL:ALL) ALL# Members of the admin group may gain root privileges%admin  ALL=(ALL) NOPASSWD:ALL# See sudoers(5) for more information on "#include" directives:#includedir /etc/sudoers.d

फिर प्रत्येक उपयोगकर्ता के लिए जिसे सूडो एक्सेस की आवश्यकता होती है एक पासवर्ड के साथ:

sudo adduser <user> sudo

और प्रत्येक उपयोगकर्ता के लिए जिसे सूडो एक्सेस की आवश्यकता है कोई पासवर्ड के साथ:

sudo adduser <user> admin

(उबंटू के पुराने संस्करणों पर, आपको इसकी आवश्यकता हो सकती है):

sudo service sudo restart

और बस!

संपादित करें: आपको व्यवस्थापक समूह जोड़ना पड़ सकता है क्योंकि मुझे नहीं लगता कि यह डिफ़ॉल्ट रूप से मौजूद है ।

sudo groupadd admin

आप डिफ़ॉल्ट एडब्ल्यूएस भी जोड़ सकते हैं ubuntu उपयोगकर्ता को admin इस आदेश के माध्यम से समूह:

sudo usermod ubuntu -g admin

नोट: के रूप में @ त्रुटि उल्लेख किया, आपको उपयोग करना पड़ सकता है adm आपके व्यवस्थापक समूह के नाम के रूप में, उबंटू के किस संस्करण का उपयोग किया जा रहा है, इसके आधार पर ।

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

<your user name> ALL=(ALL) NOPASSWD:ALL

सिस्टम को रिबूट करें और यह काम करेगा ।

किसी भी संपादक का उपयोग किए बिना संक्षिप्त उत्तर (बैश पर परीक्षण किया गया, दूरस्थ मेजबानों पर निष्पादित करने के लिए बहुत जोखिम भरा) ।

वर्तमान उपयोगकर्ता के लिए पासवर्ड के बिना काम करने के लिए सुडो को कॉन्फ़िगर करें:

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

के साथ संपादन की जाँच करें:

sudo visudo -c

सत्यापित करें कि क्या आप बिना पासवर्ड के सूडो का उपयोग कर सकते हैं:

sudo cat /etc/sudoers | grep "$USER"

...या बस इसके साथ प्रयास करें:

sudo & लेफ्टिनेंट;कुछ भी & जीटी;

जैसा कि मैं इस पर शोध कर रहा था, मुझे एहसास हुआ कि इसमें एक पंक्ति है /etc/sudoers फ़ाइल जो एक टिप्पणी नहीं है, लेकिन एक निर्देश यह निर्देशिका के तहत कोई भी फ़ाइल या फ़ोल्डर बनाता है /etc/sudoers/* की सामग्री को ओवरराइड करें /etc/sudoers.

यह एक डरपोक छोटा निर्देश है, क्योंकि यह पहली नज़र में एक टिप्पणी की गई रेखा प्रतीत होती है । यह इस तरह दिखता है:

#includedir /etc/sudoers.d

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

RUN \  useradd -U foo -m -s /bin/bash -p foo -G sudo && passwd -d foo && passwd -d root && \  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 "Customized the sudoers file for passwordless access!" && \  echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \  echo "root ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \  echo "foo user:";  su foo -c 'whoami && id' && \  echo "root user:"; su root -c 'whoami && id'

उपरोक्त कोड के साथ क्या होता है:

  • उपयोगकर्ता और समूह foo बनाया जाता है ।
  • उपयोगकर्ता foo दोनों में जोड़ा जाता है foo और sudo समूह।
  • होम निर्देशिका पर सेट है /home/foo.
  • खोल पर सेट है /bin/bash.
  • दोनों के लिए पासवर्ड foo और root हटाए गए हैं ।
  • sed कमांड इनलाइन अपडेट करता है /etc/sudoers अनुमति देने के लिए फ़ाइल foo और root उपयोगकर्ता पासवर्ड रहित पहुंच sudo कमान।
  • sed कमांड अक्षम करता है #includedir निर्देश जो उपनिर्देशिकाओं में किसी भी फाइल को इन इनलाइन अपडेट को ओवरराइड करने की अनुमति देगा ।

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