पासवर्ड के बिना sudo का उपयोग करके एप्लिकेशन कैसे चलाएं?


40

... लेकिन अभी भी उन अनुप्रयोगों के लिए आवश्यक है जिन्हें व्यवस्थापक विशेषाधिकार की आवश्यकता है?

निम्नलिखित की अनुमति देने के लिए:

$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ sudo !!
sudo apache2ctl restart             #no password asked
$                                   #works!

संदर्भ के लिए मैंने यह सेटअप amazon के e3 उदाहरणों पर देखा है

कोई उपाय?


यह मंचों पर एक महान ट्यूटोरियल है जो उन कार्यक्रमों को निर्दिष्ट करने के लिए एक अलग फ़ाइल बनाने का विवरण देता है जो आप आमतौर पर उपयोग करते हैं। और सुरक्षा कारणों से एक अच्छा विचार है।
टॉड पार्ट्रिज 'जेन 2'

जवाबों:


51

आपको sudoers फ़ाइल को संपादित करने की आवश्यकता है। सलाह दी जाती है कि सफलता आपको कम सुरक्षित प्रणाली देती है और असफलता सूडो को तोड़ सकती है। हमेशा sudoers फ़ाइल को sudo visudoत्रुटियों के लिए विज़ुअर्ड चेक के साथ संपादित करें और यदि कोई भी पाया जाता है तो फ़ाइल को नहीं बचाएगा।

एक पासवर्ड के बिना रूट के रूप में चलाने के लिए सब कुछ अनुमति देने के लिए एक बुरा विचार है, इसलिए बस एक निष्पादन योग्य के माध्यम से आपको ज़रूरत है (Apache2ctl); फ़ाइल के बहुत नीचे करने के लिए निम्नलिखित जोड़ें:

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

यदि आप चुनते हैं, तो आप "ALL" के साथ एक निष्पादन योग्य के लिए पथ को बदल सकते हैं, जिससे आपको पूर्ण पासवर्ड रहित sudo दिया जा सकता है।

अपना उपयोगकर्ता नाम बदलें और बचाने और बाहर निकलने के लिए Ctrl+ दबाएँ X। यदि कोई त्रुटि हुई है, तो यह वैसे भी वापस लौटने, संपादित करने या सहेजने की पेशकश करेगा।

सुनिश्चित करें कि आप एक निष्पादन योग्य के लिए पूर्ण पथ का उपयोग करते हैं:
यानी। /usr/bin/apache2ctlइसके बजाय बस apache2ctl। यह महत्वपूर्ण है क्योंकि स्पष्ट रूप से पथ सूटो के बिना उपयोगकर्ता के वर्तमान पथ पर एपाचेक्टल नामक किसी भी कार्यक्रम को रूट के रूप में चलाने की अनुमति देगा।


3
ध्यान दें कि आपके उपयोगकर्ता की तरह नामित समूह%YOURNAME को अनुमति देगा , जो सामान्य रूप से कोई समस्या नहीं है क्योंकि हर सामान्य उपयोगकर्ता के पास उबंटू सिस्टम जैसा एक नाम समूह है। अपने उपयोगकर्ता को अनुमति देने के लिए, % के बिना निर्दिष्ट करें । YOURNAME
डैनियल वर्नर

क्या अधिक पुनर्गठन करने का एक तरीका है? (केवल निष्पादन योग्य के कुछ कार्य)
3pic

1
पुरानी पोस्ट, लेकिन मैं निश्चित रूप से एक विशेष होस्टनाम (यदि संभव हो) के लिए सूडोर के प्रवेश को प्रतिबंधित करके उस उत्तर को पूरा करूंगा, और या तो किसी भी तर्क के लिए तर्क नहीं दिया जाएगा (निम्न apache2ctl), जैसे YOURNAME YOUR-HOSTNAME = NOPASSWD: /usr/bin/apache2ctl <specific arg | "">:। --- सभी मामलों man 5 sudoersमें जाने के लिए संदर्भ है।
Cbhihe

25

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

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

%steroid_users ALL=(ALL) NOPASSWD: ALL

फ़ाइल के अंत में, बाहर निकलें और फ़ाइल को सहेजें। यदि सबकुछ ठीक हो जाता है, और आप स्टेरॉइड_सर्स समूह के सदस्य हैं, तो आप sudo *some-command*अपना पासवर्ड दर्ज करने की आवश्यकता के परेशान किए बिना जारी कर पाएंगे ।

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

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

आशा है कि ये आपकी मदद करेगा।


यह काम किया, मैंने इसे लिया और फिर मैंने askubuntu.com/questions/192050/… से "sudo service sudo पुनरारंभ" का इस्तेमाल किया और मैं अपने सक्रिय उबंटू सत्र में इस सब का उपयोग करने में सक्षम था। बहुत बढ़िया!
पैट्रिक

5

आपको अपने उपयोगकर्ता या समूह के लिए अनुमत आदेशों की सूची से पहले NOPASSWD जोड़ने के लिए '/ etc / sudoers' फ़ाइल को संपादित करना होगा। यदि आपका उपयोगकर्ता 'व्यवस्थापक' समूह में है - आपको निम्नलिखित की आवश्यकता है:

%admin ALL=(ALL) NOPASSWD: ALL

Https://help.ubuntu.com/community/Sudoers , btw की जाँच करें


3

आप उपयोगकर्ता की सूची में nopasswd ध्वज को जोड़ सकते हैं, लेकिन यह सभी प्रश्न पूछे गए पासवर्ड को समाप्त नहीं करता है। केवल पहले वाले से पूछा जाएगा।

  1. संपादित करें sudoers: sudo visudo(आप का उपयोग करने के लिए sudo है। यह एक व्यवस्थापक फ़ाइल है।)
  2. अपने उपयोगकर्ता को व्यवस्थापक पंक्ति (अंत में) के बाद nopasswd ध्वज के साथ जोड़ें। उदाहरण के लिए:
    cyrex ALL = NOPASSWD: ALLयाcyrex ALL = (ALL) NOPASSWD: ALL

2
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

या

sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/apache2

मुझे लगता है कि यह ऐसा करेगा।

लेकिन sudo के पासवर्ड हटाने से सावधान रहें।


2
आपको पहले उदाहरण में पूर्ण पथ निर्दिष्ट करना चाहिए, सुरक्षा कारणों से - एक बेईमान उपयोगकर्ता $ PATH बदल सकता है और एक अयोग्य आदेश नाम के साथ रूट एक्सेस चोरी कर सकता है।
bgvaughan

0

अब सरल उत्तर के लिए! किसी भी चीज़ को गड़बड़ करने या अपने इंस्टॉल को ठगने का कोई संभव तरीका नहीं।

बस अपना पासवर्ड एक दो बार दर्ज करें और फिर आपको इसे फिर से दर्ज करने की आवश्यकता नहीं होगी! यह आपको समूह "रूट" में एक स्थानीय व्यवस्थापक खाते को जोड़ने की अनुमति देगा जो तब एक टेम्पलेट से संयुक्त राष्ट्र-टिप्पणी है जो पूरे समूह को "रूट" सुपरसुसर विशेषाधिकारों की अनुमति देगा। आप इस प्रक्रिया के लिए मेरी सुरक्षा चिंता / समाधान इस पोस्ट के बाद के भाग में पढ़ सकते हैं।

% उपयोगकर्ता नाम और आपके उपयोगकर्ता नाम के लिए वैश्विक चर है (वांछित उपयोगकर्ता नाम के साथ बदलें)

चरण 1: एक टर्मिनल विंडो खोलें और फिर टाइप करें " sudo usermod -a -G root %username%"

चरण 2: फिर इसे कॉपी / पेस्ट करें ...

sudo sed -i 's/# auth       sufficient pam_wheel.so trust/auth       sufficient pam_wheel.so trust/g' /etc/pam.d/su`

चरण 2 या टाइप करें

sudo nano /etc/pam.d/su`

गोटो लाइन 19 और पहले "#" को हटा दें # auth sufficient pam_wheel.so trust(कुछ के लिए एक अलग लाइन नंबर हो सकता है)

* पहला आदेश समूह "रूट" में आपका% उपयोगकर्ता नाम% जोड़ता है

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


Endnote:

साथ गड़बड़ न करें /etc/sudoers... बहुत सारे चेक / बैलेंस हैं जो 'सु' प्रमाणीकरण से गुजरना चाहिए। Superuser प्रमाणीकरण अन्य सभी लॉगिन प्रमाणीकरणों के समान pam.d प्रक्रिया का उपयोग करता है। "aetc/security/access.conf" में tcp / ip (192.168.0.1) संचार और टेलनेट सेवाओं (tty1 & tty2 & tty3 ... आदि) के माध्यम से अभिगम नियंत्रण के लिए लेआउट है। परिवहन प्रोटोकॉल के माध्यम से प्रति एप्लिकेशन को अधिक सटीक फ़िल्टरिंग की अनुमति देता है। यदि सुरक्षा आपकी चिंता है, तो आपकी चिंता को दूरस्थ / कोड खतरों की ओर निर्देशित किया जाना चाहिए। जब ​​आप कमरे से बाहर निकलते हैं तो कोई वास्तव में आपके कंप्यूटर को छूता है !!!

व्यामोह के लिए भोजन (न सिर्फ यह समीक्षा में यह टाइप करें):

sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf

^ यह ब्लॉक उन लोगों के लिए सांत्वना देता है जो सिस्टम या रूट के सदस्य नहीं हैं। कभी-कभी प्रोग्राम ऐसे उपयोगकर्ता नाम / समूह स्थापित करते हैं जिनका शोषण किया जाता है!


2
सुरक्षा विशेषज्ञ नहीं है, लेकिन यह थोड़ा सा सहज लगता है। आप संपूर्ण समूह के लिए पासवर्ड को अक्षम कर रहे हैं ताकि किसी विशेष एप्लिकेशन के लिए सुडो को परिष्कृत करने की "जटिलता" से बचने के लिए किसी एकल उपयोगकर्ता को पासवर्ड के बिना एक विशिष्ट एप्लिकेशन चलाने की अनुमति दी जाए ? और यह सब एक सार्वजनिक सर्वर पर? क्या स्क्रिप्ट ने आपकी मूल उत्तरजीविता की प्रवृत्ति को निष्क्रिय कर दिया था? सुरक्षा COMPLEX BY DESIGN है। याद रखें, यह एक प्याज की तरह है। इसमें परतें हैं और यह आपको रोता है ... समझौता किए गए सर्वर पर डेटा हानि केवल समीकरण का हिस्सा है। आपके सिस्टम से एक हैकर स्प्रिंग-बोर्डिंग हमले समान रूप से गंभीर है, लेकिन अक्सर अनदेखी की जाती है
hmayag

2
यह सहज ज्ञान युक्त है और सामान्य ज्ञान का मुकाबला करता है: एक उपयोगकर्ता के लिए पूरे कुकी जार को खोलना, जिसे केवल एक कुकी की आवश्यकता होती है वह बहुत गैर जिम्मेदार है। आप sudoers सूची में उपयोगकर्ताओं को जोड़ेंगे और sudoers फ़ाइल / फ़ाइलों को संपादित करने के बजाय पासवर्ड दर्ज करने की आवश्यकता को हटा देंगे। "यदि एक हैंडगन बच्चों के लिए असुरक्षित है, तो उन्हें एक कैनन न दें।" -मे
जॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.