सुडो कमांड को निष्पादित करने में लंबा समय क्यों लगता है?


83

मैं पिछले कुछ महीनों में लिनक्स (फेडोरा 10, फिर 11) को उठा रहा हूं (और इसका भरपूर आनंद ले रहा हूं- यह सब फिर से कंप्यूटर की खोज करने जैसा है, जिससे बहुत सी चीजें सीखने को मिलती हैं)।

मैंने अपना उपयोगकर्ता / / / sudoers फ़ाइल की अंतिम पंक्ति में जोड़ा है जैसा कि नीचे दिखाया गया है, ताकि जब मैं sudo कमांड निष्पादित करूं, तो मुझसे मेरा पासवर्ड न पूछा जाए:

MyUserName ALL = (ALL) NOPASSWD: ALL

अब हर बार जब मैं sudo का उपयोग करके एक कमांड निष्पादित करता हूं, तो यह वास्तव में कार्य करने से पहले ध्यान देने योग्य राशि को रोक देता है (~ 10 सेकंड)। यह क्यों हो सकता है और मैं इसे कैसे ठीक कर सकता हूं? मैं फेडोरा 11 x86 64 पर सूडो संस्करण 1.7.1 चला रहा हूं।


तकनीकी रूप से यह एक स्क्रिप्ट को संपादित करने के रूप में गिना जाता है, है ना? क्या स्क्रिप्ट एक कार्यक्रम नहीं है?

6
NOPASSWD: एक सुरक्षा जोखिम माना जाता है और पहली जगह में sudo का उपयोग करने के उद्देश्य को पराजित करता है।

मैं इसे खरीद सकता हूं, लेकिन यह मुद्दा अभी भी बना हुआ है कि इसमें इतना समय क्यों लग रहा है।

2
यह मशीन उपयोगकर्ताओं को कहां से प्राप्त होती है और कहां से प्रमाणीकरण करती है? LDAP, संभवतः केर्बरोस के साथ शायद?
जूल

जवाबों:


123

मैंने एसओ से यह सवाल पूछा और वह यहां से चले गए। कहा कि अब मेरे पास सवाल को संपादित करने की क्षमता नहीं है जैसे कि मेरे पास इसका स्वामित्व है, या सही उत्तर को भी स्वीकार करता है, लेकिन यह सही कारण है कि इसे क्यों और कैसे हल किया जाए:

यहां पाया गया उपयोगकर्ता "rohandhruva" वहां पर सही उत्तर देता है:

ऐसा तब होता है जब आप इंस्टॉल प्रक्रिया के दौरान होस्टनाम बदलते हैं।

समस्या को हल करने के लिए, फ़ाइल / etc / मेजबान को संपादित करें

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 <ADD_YOURS_HERE> 
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 <ADD_YOURS_HERE>

3
बिलकुल सही। कुछ हद तक आश्चर्य की बात है कि अगर आप अपने होस्टनाम को स्थापित समय पर बदलते हैं, लेकिन फेडोरा जैसे डिस्ट्रोस संपादित नहीं करते हैं / आदि। यह आपके लिए खुला स्रोत है!
dimo414

यह मेरे धीमे धीमे उपयोग को तय करता है, धन्यवाद! मैंने / etc / hostname संपादित किया, और / / / मेजबान फ़ाइल को संपादित करना भूल गया।
जो

2
अपने होस्टनाम को 127.0.0.1 या :: 1 लाइन में जोड़ने से कुछ सर्वर से संबंधित सॉफ़्टवेयर को सही होस्टनाम / आईपी / इंटरफ़ेस से जोड़ा जा सकता है। ऐसा ही एक उदाहरण क्लोउडा प्रबंधक है, हडूप सेवाओं को गलत होस्टनाम मिलता है और सीएम को भ्रमित करता है क्योंकि वे सभी स्थानीयहोस्ट के लिए संकल्प करते हैं। मैं एक संभावित समाधान के लिए नीचे अन्य उत्तर पढ़ने का सुझाव देता हूं। यह एक स्टैंडअलोन वर्कस्टेशन के मुद्दों को पैदा कर सकता है या नहीं कर सकता है जिसमें कोई अन्य कंप्यूटर इससे कनेक्ट नहीं होगा।
ddcruver

1
यह /etc/nsswitch.conf (समान कारणों के लिए) भी हो सकता है। मेरा "मेजबानों: डीएनएस फाइलों" के लिए सेट किया गया था और इसलिए यह एक लंबे समय के साथ एक DNS सर्वर पर मेरे होस्टनाम को देख रहा था। मैंने इसे "होस्ट्स: फाइल्स डीएनएस" में बदल दिया है और इसलिए अब यह सबसे पहले / etc / मेजबान में दिखेगा। इस उत्तर के लिए धन्यवाद, जिसने मुझे nsswitch.conf में देखने का नेतृत्व किया!
एलन पोर्टर

1
यह हास्यास्पद है कि यह समाधान था। दुनिया में sudoकमांड को काम करने के लिए होस्टनाम को क्यों देखना पड़ता है? मेरे होस्टनाम के साथ sudo echo helloक्या करना है ? वैसे भी, उत्तर के लिए धन्यवाद
smac89

24

जांचें कि आपका सिसलॉग डेमन सही ढंग से काम कर रहा है; यह मेरे लिए समस्या का कारण बना।

निम्न आदेश चलाएँ

logger 'Hello world'
  1. क्या समय की उचित मात्रा में कमांड वापस आती है?

  2. क्या 'हैलो वर्ल्ड' में दिखाया गया है /var/log/syslog?

यदि यह मामला नहीं है, तो सिसलॉग डेमॉन दुर्घटनाग्रस्त हो गया है। इसे फिर से शुरू करके अपनी समस्या को ठीक करना चाहिए।


9
हैरानी की बात है कि मेरे लिए यह समस्या थी। ऐसा कौन सोच सकता था। मेरे लिए समाधान बस syslog को पुनरारंभ करना था। service rsyslog restart
माइककूल

मुझे भी। service rsyslog restartमेरे धीमे धीमे आदेशों को तय किया।
पेड्रो कॉर्डेइरो

हैरानी की बात है कि मेरे लिए यह समस्या थी। इससे पहले, सर्वर के लिए संपूर्ण अनुरोध बहुत धीरे-धीरे है। मैं सिर्फ यह जानना चाहता हूं कि क्यों?
माइकल ने

10

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

sudo strace -r -o trace.log sudo echo hi

प्रत्येक पंक्ति पिछले syscall में प्रवेश करने के बाद से शुरू होने वाले समय के साथ शुरू होगी।

(प्रारंभिक सुडोकू आवश्यक प्रतीत होता है; मुझे नहीं पता कि इससे परिणामों का कितना नुकसान होगा।)


धन्यवाद। यह HDD tho पर है, कोई USB या नेटवर्क ड्राइव नहीं है।

@ चुगा: और आपने स्ट्रेस से क्या सीखा?

@oligofren: आपको सुडो स्ट्रेस करने की ज़रूरत है
ysth

8

मुझे हाल ही में पता चला कि मुझे भी यही समस्या थी। कोई अचानक देरी नहीं हुई थी और फिर अचानक 10-20 सेकंड की देरी हुई। मैंने विशिष्ट मुद्दे का उपयोग करके निर्धारित किया:

 1. chmod u+s /usr/sbin/strace  (as the root user)

अपने आप के रूप में:

 1. sudo -K
 2. strace sudo /bin/tcsh

और फिर पता करें कि सिस्टम कॉल कहाँ लटका हुआ है।

मेरे मामले में, मैंने पाया कि यह डीएनएस अनुवाद पर लटका हुआ था, जाहिरा तौर पर मेरी सूची में एक डीएनएस में से एक /etc/resolv.confबहुत ही धुंधला था या खराब हो गया था। इसलिए मैंने रिज़ॉल्यूशन ऑर्डर बदल दिया और पूफ चीजों ने फिर से जल्दी काम किया।


सबसे अच्छा जवाब (मेरे लिए)! पता चला कि मेरा डीबस ब्रोकर नेटवर्क डिस्कनेक्ट पर दुर्घटनाग्रस्त हो गया था और सूडो / केडीई इसे कनेक्ट करने के लिए समय निकाल रहा था। धन्यवाद!
PSSGCSim

धन्यवाद, इससे मुझे मदद मिली। मुझे hostsअपने /etc/nsswitch.conf लाइन के पिछले परिवर्तन को पूर्ववत करना था। मैंने hostsमूल्य के लिए एक उपसर्ग के रूप में "रिज़ॉल्यूशन डीएनएस" जोड़ा था । जब मैंने इस उपसर्ग को हटा दिया, तो सुडो फिर से तेज हो गया।
मोनिबर

5

मैं फेडोरा के बारे में निश्चित नहीं हूं, लेकिन मैंने अन्य प्रणालियों का उपयोग किया है जहां सूडो की जांच होगी कि आप कहां से लॉग इन हैं, जो कि अगर आपका डीएनएस सेट अप नहीं है तो उम्र को समय समाप्त होने में लग सकता है। यह भी देखा जा सकता है जब मशीन में SSH'ing - यह एक संकेत के साथ आने के लिए उम्र लेता है।


5

मेरे पास एक ही समस्या थी, मैंने त्रुटियों के लिए /var/log/auth.log और syslog की जाँच की। यह बताता है कि मेरा LDAP सर्वर तक नहीं पहुंचा जा सका और इसने सब कुछ धीमा कर दिया।

मैंने अब LDAP आधारित नीति का उपयोग नहीं किया, इसलिए मैंने /etc/nsswitch.conf से सभी "ldap" संदर्भ हटा दिए

तब से सब कुछ फिर से एक आकर्षण की तरह काम करता है।


आप पाँच साल पुराने प्रश्न का स्पष्ट रूप से असंबंधित उत्तर (एलडीएपी का उपयोग नहीं करते) क्यों करते हैं?
स्वेन

7
क्योंकि यह किसी की भी मदद कर सकता है। मैंने यहां बताई गई सभी चीजों की जांच की, लेकिन कुछ भी मदद नहीं की। किसी और को मेरे जवाब के साथ सही दिशा में देखने पर ध्यान केंद्रित किया जा सकता है कि क्या उसके पास धीमी और अनुत्तरदायी सूडो कमांड के अंतर्निहित कारण के रूप में कोई एलडीएपी कनेक्शन मुद्दे हैं। यह उतना ही प्रासंगिक है जितना कि डीएनएस से संबंधित उत्तर जिसमें कवर के पीछे कुछ गलती है जो उपयोगकर्ता को सीधे दिखाई नहीं देता है। मैं इस साइट को ज्ञान के सामान्य स्रोत के रूप में मानता हूं, न कि केवल एक प्रश्न / उत्तर प्रकार की वेबसाइट के रूप में। यह प्रासंगिक ज्ञान एकत्र करने के बारे में है।
सकुराबा

6
नीले नरक में भी आप मेरी मदद को बदनाम करने वाले हैं। यह साइट इसलिए काम करती है क्योंकि ज्ञान साझा करने को प्रोत्साहन दिया जाता है, इसलिए नहीं कि लोगों को नीचा दिखाया जाता है। यदि आपको यह पसंद नहीं है, तो आप इसे अनदेखा करने के हकदार हैं।
सकुराबा

5

मामले में, यह होस्टनाम पाया जाता है (जो कि /etc/sysconfig/ नेटवर्क में कॉन्फ़िगर किया गया था ) /etc/hostsफ़ाइल में मौजूद नहीं है ; इसलिए उपर्युक्त फ़ाइल में जोड़ने पर, फ़ाइल तुरंत खुल जाती है।


3

मुझे एक समान समस्या थी, मैंने इसे hostname (जैसे mybox) और hostname कमांड (mybox.mydomain.com) का पूरा आउटपुट देकर निर्धारित किया था। इसे अभी मंजूरी दे दो. तात्कालिक पहुँच के लिए 2 मिनट खुलने / आदि / होस्ट करने के लिए गया।


3

SELinux मामला

यदि वही सुडो कमांड केवल एक डेमॉन में धीमी है और कमांड लाइन पर तेज है, तो यह SELinux के कारण सबसे अधिक संभव है। (SELinux = NSA सुरक्षा-संवर्धित लिनक्स कर्नेल मॉड्यूल, डिफ़ॉल्ट रूप से फेडोरा में सक्षम है।)

एक विशिष्ट मामला http सर्वर और सर्वर प्रबंधन के लिए एक विशेष स्क्रिप्ट है, जिसमें प्रतिबंधित है sudoers:

apache ALL=(root_or_user) NOPASSWD: /full/path/the_safe_command

यह इस मामले में विशिष्ट है कि ऑडिट लॉग में SELinux के बारे में कुछ भी नहीं बताया गया है ausearch -m avc -ts today, लेकिन यदि हम अस्थायी रूप से लागू करते हैं तो स्क्रिप्ट तेजी से आगे बढ़ रही है setenforce 0। (और फिर वापस सक्षम करें setenforce 1)

सिस्टम लॉग में केवल प्रासंगिक संदेश (journalcrl) 25 सेकंड की देरी के बाद ये हैं:

... sudo [...] pam_systemd (sudo: session): सत्र बनाने में विफल: उत्तर नहीं मिला। संभावित कारणों में शामिल हैं: दूरस्थ अनुप्रयोग ने उत्तर नहीं भेजा, संदेश बस सुरक्षा नीति ने उत्तर को अवरुद्ध कर दिया, उत्तर समय समाप्त हो गया, या नेटवर्क कनेक्शन टूट गया।
... sudo [...]: pam_unix (sudo: session): सत्र उपयोगकर्ता रूट के लिए खोला गया (uid = 0)

सभी साइलेंटेड "न ही-ऑडिट" सेग्लिनक्स संदेशों को लॉग करना सक्षम किया जा सकता है semodule -DBऔर फिर से अक्षम किया जा सकता है semodule -B
(मुझे उम्मीद है कि मैं इस मामले के लिए जल्द ही एक SELinux नीति मॉड्यूल जल्द ही यहां लिखूंगा या इस उत्तर से एक विधि का उपयोग किया जा सकता है।)


जानकारी के इस टुकड़े के लिए धन्यवाद। यहाँ जानकारी से, मैं तब एक संबंधित लेख खोजने में सक्षम था fprintdजिसने अपराधी (फिंगरप्रिंट प्रमाणीकरण) की संभावना को नोट किया था । निकाल रहा है fprintdऔर fprintd-pamमेरे लिए इस मुद्दे को हल।
केविनो

@ केविनो प्रसन्न है कि इसने आपको एक समाधान खोजने में मदद की। हालांकि मुझे पता था कि मेरी समस्या बहुत विशिष्ट थी और सवाल के लिए मेरा योगदान केवल यह होना चाहिए कि SELinux के बारे में संदेह का निदान या बहिष्कार कैसे किया जाए।
हाइनेसर

मैं बिल्कुल यह एक +1 दिया! यह संदेश बस था जिसने समाधान निकाला। मैंने सुडो पर कई बार धीमी गति से देखा था, लेकिन तुम्हारा वह सुराग था जिसकी मुझे जरूरत थी।
केविनो

1

sudoersमेरे पास मौजूद नमूना फ़ाइल को देखने से, मुझे विश्वास है कि NOPASSWD:बिट के बाद एक स्थान होना चाहिए ।


मैंने एक स्थान जोड़ा, लेकिन इसमें अभी भी अंतराल है। सुझाव के लिए Thx।


1

यदि आप DNS जैसे कोई कैशिंग एप्लिकेशन चला रहे हैं, तो होस्ट की किसी भी समस्या को ठीक करने के बाद, आप किसी भी खराब DNS कैश को साफ करना सुनिश्चित करते हैं:

/etc/init.d/nscd force-reload

1

मेरे लिए यह krb5-user / config / loc स्थापित किया जा रहा था। मैंने /var/log/auth.log की जांच करके इस पर ध्यान दिया। उन पैकेजों की स्थापना रद्द करने के लिए apt-get remove का उपयोग करके इसे ठीक किया। अगर आप केर्बोस (pam_krb5) स्पष्ट रूप से आवश्यक कंप्यूटर पर हैं तो उन पैकेजों को न निकालें।


0

क्या आप प्रमाणीकरण के लिए LDAP का उपयोग कर रहे हैं?

यदि ऐसा है तो आप शायद बाइंड पॉलिसी का उपयोग नरम करना चाहते हैं। /Etc/ldap/ldap.conf (या /etc/ldap.conf) में:

bind_policy soft

0

ऐसा लगता है जैसे आपके प्रमाणीकरण श्रृंखला में आपके पास कुछ समय है। जाँच करें कि सूडो कैसे अड़चनों को प्रमाणित करने और देखने की कोशिश करते हैं।


0

सिस्टमड केस

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

  • systemctl status <any.service> समय समाप्त होगा
  • मैं नहीं कर सकता sudo reboot(सिस्टम आधारित)

उपाय

एक पुनरारंभ ने मेरा मुद्दा ठीक कर दिया, लेकिन मेरे लिए सिर्फ एक बैंडेड था। आपको अभी भी यह पता लगाने की आवश्यकता है कि आप स्मृति से बाहर क्यों भागे / दुर्घटनाग्रस्त हो गए।

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