क्यों sudoers NOPASSWD विकल्प काम नहीं कर रहा है?


75

मेरे पास / etc / sudoers में NOPASSWD लाइन है (साथ संपादित visudo)

gatoatigrado    ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq

हालाँकि, आउटपुट है,

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: sorry, a password is required to run sudo

इस तरह की कमांड एक OpenSuSE मशीन पर काम करती है, लेकिन उबंटू 11.10 पर नहीं। मैं क्या गलत कर रहा हूं?

नोट : मुझे कोई प्रासंगिक सिस्टम लॉग संदेश नहीं मिल सकता है, उदाहरण के लिए tail -f /var/log/syslog

संपादित करें

यहाँ / etc / sudoers है।

Defaults    env_reset

# things I've tried copying from an opensuse machine
Defaults always_set_home
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"

root    ALL=(ALL:ALL) ALL
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

2
क्या आप पूर्ण दिखा सकते हैं sudoers, नियमों का क्रम अप्रासंगिक नहीं है।
enzotib

जवाबों:


117

आपको समूह के लिए नियम के साथ लाइन के बाद उस लाइन को डालना चाहिए sudo, क्योंकि, जैसा कि sudoersमैन पेज बताता है:

   When multiple entries match for a user, they are applied in order.
   Where there are multiple matches, the last match is used (which is not
   necessarily the most specific match).

5
एक अतिरिक्त नोट के रूप में, यह कई समूहों में उपयोगकर्ताओं के साथ-साथ करने के लिए लागू होता है: उदाहरण के लिए उपयोगकर्ता समूह में है व्यवस्थापक और समूह sudo अगर के लिए नियम sudo के बाद है व्यवस्थापक तो के लिए नियम sudo के लिए नियम को ओवरराइड कर व्यवस्थापक दोनों समूहों में उपयोगकर्ता के लिए।
पॉपुलस

2
धन्यवाद! मैंने अपनी पंक्ति को अंत तक जोड़ा /etc/sudoersऔर यह अब काम करता है। लोग हैं, जो रुचि रखते हैं करने के लिए यहाँ पूर्ण विवरण: techglimpse.com/ubuntu-sudoers-nopasswd-option-not-working
elimisteve

4

आदर्श रूप से यदि आप कस्टमाइज़ कर रहे हैं कि आपके द्वारा किस कमांड को चलाया जा सकता है , तो फ़ाइल को सीधे संपादित करने के बजाय sudoएक अलग फ़ाइल में इन परिवर्तनों को करना चाहिए । आपको हमेशा फ़ाइल को संपादित करने के लिए भी उपयोग करना चाहिए ।/etc/sudoers.d/sudoersvisudo

उदाहरण: sudo visudo -f /etc/sudoers.d/slowcpu

अनुमति देते हुए अपनी लाइन डालें: gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq

तब सहेजें और बाहर निकलें और visudoआपको कोई भी वाक्यविन्यास त्रुटि होने पर आपको चेतावनी देगा।

आप sudo -lअपने उपयोगकर्ता द्वारा दी गई अनुमतियों को देखने के लिए भाग सकते हैं , यदि उपयोगकर्ता के किसी विशेष NOPASSWDकमांड से %groupyouarein ALL=(ALL) ALLआपके पासवर्ड के लिए संकेत दिए गए आउटपुट में कोई भी आदेश दिखाई देगा ।

यदि आप अपने आप को इन sudoers.d फ़ाइलों के बहुत सारे बनाते हैं, तो शायद आप उन्हें प्रति उपयोगकर्ता नाम बनाना चाहेंगे, ताकि वे कल्पना करना आसान हो। ध्यान रखें कि फ़ाइल के भीतर फ़ाइल नाम और नियम का क्रम बहुत महत्वपूर्ण है, LAST एक भरी हुई जीत है, चाहे वह पिछली प्रविष्टियों की तुलना में अधिक या कम अनुमत हो।

आप 00-99 या aa / bb / cc के उपसर्ग का उपयोग करके फ़ाइल नाम आदेश को नियंत्रित कर सकते हैं, हालांकि यह भी ध्यान रखें कि यदि आपके पास कोई भी फाइल है जिसमें संख्यात्मक उपसर्ग नहीं है, तो वे गिने हुए फ़ाइलों के बाद लोड करेंगे, ओवरराइडिंग सेटिंग्स। ऐसा इसलिए है क्योंकि आपकी भाषा सेटिंग्स "लेक्सिकल सॉर्टिंग" के आधार पर शेल पहले नंबर का उपयोग करता है और फिर "आरोही" क्रम में सॉर्ट करते समय ऊपरी और निचले हिस्से को इंटरलेव कर सकता है।

दौड़ने की कोशिश करें printf '%s\n' {{0..99},{A-Z},{a-z}} | sortऔर printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sortदेखें कि आपकी वर्तमान भाषा प्रिंट करती है AaBbCcया ABCफिर abcयह निर्धारित करने के लिए कि उपयोग करने के लिए सबसे अच्छा "अंतिम" अक्षर उपसर्ग क्या होगा।


मैं इससे सहमत हु। / Etc / sudoers फ़ाइल के संपादन में कुछ तर्क काउंटर सहज ज्ञान युक्त लग रहे थे - मुझे% पहिया नहीं मिल सकता है = (ALL) NOPASSWD: सभी को काम करने के तरीके को सूडोर्स में लिखा गया था, जब तक कि मैं एक पोस्ट नहीं पढ़ता जहाँ किसी ने कहा हो #includedir /etc/sudoers.d लाइन को दूसरी लाइनों जैसे% SUDO और% WHEEL से पहले होना चाहिए था। जब मैंने #include dir को दूसरे ग्रुप परमिशन से ऊपर रखा, तो उन्होंने काम करना शुरू कर दिया। तो फिर मैंने /etc/sudoers.d/ में प्रत्येक समूह के लिए फाइलें बनाईं, उसी क्रम में गिने जो वे sudoers फ़ाइल में थे, लेकिन रूट ALL = (ALL) सभी को अभी भी #includedir लाइन के नीचे sudoers होना चाहिए था। अजीब।
AveryFreeman

वास्तव में मुझे लगता है कि सूदियो को सूडोर्स के अंत में रहना चाहिए। जो आप शायद देख रहे थे, वह आपके sudoers.d की अन्य फ़ाइलों में से एक है जो आपके परिवर्तन को पूर्ववत कर रही थी। आपकी मुख्य फ़ाइल में आगे एक पंक्ति भी हो सकती है जो पहिया समूह को प्रतिबंधित कर रही थी। ध्यान रखें कि sudoers को संसाधित किया जाता है जहां अंतिम नियम एक कमांड या समूह पर लागू होता है इसलिए अधिक विशिष्ट मदद मिलती है, लेकिन यदि कोई सामान्य आदेश अंत में आता है और इसमें NOPASSWD नहीं है तो यह आपके पिछले अपवादों को खत्म कर देगा। यही कारण है कि आपके पास अलग-अलग फ़ाइलों में आपके नियम होने चाहिए ताकि वे बाद में संसाधित हों।
ड्रैगन 788

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

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

आर्क व्हील का उपयोग करता है।
एवरीफ्रेमैन

4

बस इसमें भी भाग गया।

मेरी स्थिति यह है कि मैं एक दूरस्थ प्रणाली स्थापित कर रहा हूं जो बिना सिर के चलेगी। मैंने पूर्ण डिस्क एन्क्रिप्शन सक्षम किया है (अन्यथा जिस्मानी पहुंच वाला एक हमलावर कुछ भी कर सकता है या वह चाहता है) मैं केवल पब की कुंजी के साथ ऑर्ट करना चाहता हूं (मैं पासवर्ड को परेशान कर दूंगा ताकि "कुछ हो, कुछ पता हो" योजना एक पासवर्ड होगी संरक्षित कीपर - थ्रोट लॉगिन पूरी तरह से अक्षम है)

उबंटू इंस्टॉलर एक गैर-रूट व्यवस्थापक उपयोगकर्ता के लिए संकेत देता है जो समूह में जुड़ जाता है sudo। मैंने तब मैन्युअल रूप से sudoersफ़ाइल का उपयोग करके खुद को जोड़ा था sudo visudo:

my_username ALL=(ALL:ALL) NOPASSWD:ALL

ध्यान दें कि यदि आप अपने लैपटॉप पर नोपस्वाड का उपयोग करते हैं, तो आपको हमेशा अपने कंप्यूटर को लॉक करना चाहिए क्योंकि आप दूर चलते हैं या फिर एक आकस्मिक हमलावर बहुत समझौता कर सकता है, जबकि आप अपनी कॉफी में क्रीम लगाने के लिए उठ रहे हैं।

मुझे अभी भी पासवर्ड प्रमाणित करना था।

enzotib का उत्तर कुंजी है जो चल रहा है। मेरे उपयोगकर्ता नाम के लिए प्रविष्टि के बाद समूह sudo sudoers में दिखाई देता है।

सूडो लाइन के नीचे अपनी प्रविष्टि को स्थानांतरित करने के बजाय मैंने बस उस लाइन को हटा दिया जिसे मैंने पहले जोड़ा था और फिर NOPASSWDप्रवेश के लिए जोड़ा%sudo

वह काम करने लगता है। यदि आपको वास्तव में इसकी आवश्यकता है (केवल मेरे मामले में यह ठीक वही था जो मुझे चाहिए था, तो केवल nopasswd का उपयोग करें, अधिकांश उपयोगकर्ताओं के लिए sudo गतिविधि के लिए पासवर्ड की आवश्यकता होती है)

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


किसी भी / सभी आदेशों के खिलाफ NOPASSWD को सक्षम करना कभी भी एक अच्छा विचार नहीं है, इसका मतलब है कि कोई भी जो आपके सिस्टम पर आता है और एक उपयोगकर्ता को sudo समूह में लाने के लिए प्रबंधित करता है, वह आपके सिस्टम को बहुत जल्दी से कुछ भी करने में सक्षम हो जाएगा। मैं आसानी से लाइवसीडी का उपयोग करने के कुछ ही मिनटों के साथ या अपने उपयोगकर्ता को एक सीएमडी चलाने में धोखा देकर ऐसा कर सकता हूं जिसे कहा जाता है sudoकि अपने अनुरोधित कमांड को चलाने के अलावा सुडो समूह में किसी अन्य उपयोगकर्ता को जोड़ने के लिए अपनी स्वयं की अनुमतियों का उपयोग करता है।
ड्रैगन 788

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

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

@ dragon788 सच में पर्याप्त, शायद हम दोनों अपनी प्रतिक्रिया को संपादित कर सकते हैं ताकि सभी स्तरों के उपयोगकर्ताओं को बेहतर सुरक्षा की दिशा में एक कदम उठाने में मदद मिल सके। जब एक हमलावर के पास भौतिक पहुँच और एक नोट है कि यदि कोई लैपटॉप उपयोगकर्ता अपने कंप्यूटर को सार्वजनिक रूप से लॉक करना भूल जाता है, तो sudo nopasswd त्वरित समझौता कर सकता है। (हालांकि मैं पांच मिनट का लॉक और स्क्रीन लॉक क्विक की की स्थापना करने का प्रस्ताव करूंगा, लेकिन वास्तव में बेहतर सुरक्षा हो सकती है।)
jorfus

उत्कृष्ट अद्यतन, मेरे जवाब में इन टिप्पणियों के अलावा और कोई मज़बूत सिफारिशें नहीं हैं, और विडंबना यह है कि काम पर मैं पूरी डिस्क एन्क्रिप्शन का उपयोग करता हूं जहां मैंने NOPASSWD को सक्षम करना समाप्त कर दिया है क्योंकि मेरे पास एक बहुत ही सुरक्षित पासवर्ड है जो टाइप करने के लिए दर्द बन जाता है बार-बार, और मैं थोड़ी देर के बाद अपनी मशीन को बंद करने के लिए xautolock का उपयोग करता हूं।
ड्रैगन 788

0

रिमोट सिस्टम पर, एन्क्रिप्शन को छोड़ दें, लेकिन "प्रशासक" के समूह के रूप में सब कुछ एक रूट के स्वामित्व में होने दें - यह 0 नहीं है!
आप #sudo -g Administrators उन लोगों के लिए संशोधन कर सकते हैं जिन्हें पूर्ण पहुंच की आवश्यकता है - sudo फ़ाइल में नहीं , बल्कि .loginप्रोफ़ाइल पर। किसी भी मानक स्क्रिप्ट में अब "रूट" के रूप में रिमोट तक पहुंच हो सकती है और आप उन फ़ाइलों की सुरक्षा कर सकते हैं जिन्हें संरक्षित किया जाना चाहिए।
एक अन्य आसान "समूह" ब्राउज़र कैश में लॉगिन निर्देशिका के साथ "सैंडबॉक्स" है और इसे स्वतंत्र रूप से पढ़ सकते हैं और कुछ नहीं। ऊपरी मामले पहले चरित्र का उपयोग करें।

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