परीक्षण करें कि क्या उपयोगकर्ता के पास उपयोगकर्ता इनपुट की आवश्यकता के बिना sudo विशेषाधिकार हैं


12

मेरे पास एक स्थानीय शेल स्क्रिप्ट है जो पेलोड देने से पहले एक दूरस्थ मेजबान पर कई परीक्षण करता है; इनमें से एक परीक्षण यह है कि क्या उपयोगकर्ता के पास सूडो विशेषाधिकार हैं, बस इसके साथ ही जांच की जाती है, sudo -vइसके लिए उपयोगकर्ता को अपना पासवर्ड दर्ज करना होगा। इसके अतिरिक्त दूरस्थ होस्ट को तत्काल सूडो टाइमआउट लगता है, इसलिए हर नए कनेक्शन पर पासवर्ड प्रविष्टि की आवश्यकता होती है, और यह कुछ ऐसा है जिसे मुझे बदलने की अनुमति नहीं है (एक नीति के रूप में)।

मैं निश्चित रूप से परीक्षण कर सकता हूं कि क्या उपयोगकर्ता कुछ समूहों का हिस्सा है, लेकिन तब यह दूरस्थ होस्ट कॉन्फ़िगरेशन के लिए अज्ञेय नहीं होगा, इसलिए मैं उम्मीद कर रहा था कि एक ऐसी विधि है जो यह जांच सकती है कि उपयोगकर्ता के समूहों को भी मानने की आवश्यकता नहीं है। उपयोगकर्ता इनपुट की आवश्यकता नहीं है?

धन्यवाद!

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


क्या आपको जांचने की ज़रूरत है कि उपयोगकर्ता को sudo का उपयोग करने की संभावना है, या यदि वह sudo के माध्यम से शेल स्क्रिप्ट निष्पादित कर रहा है?
निको एसपी

बस क्या वह संभावना है। स्थानीय स्क्रिप्ट को बाद में सूडो पासवर्ड दर्ज करने की आवश्यकता होगी, इसलिए मैं बस इस बात की जल्द जांच करना चाहता हूं कि दूरस्थ होस्ट पर उपयोगकर्ता यहां तक ​​कि एक sudoer है।
दानह

मेरे ubuntu बॉक्स पर एक त्वरित जाँच ने मुझे sudo -l दिया, यह उन कमांड को लौटाता है जो उपयोगकर्ता चला सकता है, यदि (ALL) सभी उनका हिस्सा है, तो उपयोगकर्ता किसी भी कमांड के लिए sudo का उपयोग करने में सक्षम है। शायद यह सही कोण है?
निको एसपी

1
sudo -lमेरे पासवर्ड के लिए मुझे संकेत देता है।
ThatGraemeGuy

1
टोड पर आधारित सूडो कैश यदि एक नया सत्र आपको वही ट्टी देता है जो आपको प्रेरित नहीं किया जा सकता है। sudo -kपहले निष्पादित करने का प्रयास करें ।
मार्क वैग्नर

जवाबों:


13

मुझे डर है कि आप केवल एक चीज का परीक्षण कर सकते हैं यदि उपयोगकर्ता के पास पासवर्ड के बिना sudo विशेषाधिकार है ।

निष्पादित

sudo -n true

यदि $ क्या 0 है, यदि उपयोगकर्ता के पास पासवर्ड के बिना sudo एक्सेस है, यदि $? 1 है, उपयोगकर्ता को एक पासवर्ड की आवश्यकता है।

यदि आपको किसी विशिष्ट प्रोग्राम के लिए सत्यापन की आवश्यकता है, तो trueअपने प्रोग्राम के साथ बदलें , एक तरह से प्रोग्राम कुछ भी नहीं करता है, जैसेchmod --help


1
ध्यान दें कि यह प्रारंभिक पता लगाने में मदद नहीं करता है, तो आदेश Xहै sudoसक्षम एक पासवर्ड दर्ज किए बिना और गलती से यह चलने के बिना
कोशिश पकड़ने के अंत में

3

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

sudo -n -l -U foo 2> & 1 | egrep -c -i "अज्ञात उपयोगकर्ता को चलाने की अनुमति नहीं है। अज्ञात उपयोगकर्ता"

यदि यह शून्य देता है, तो "फू" की पहुंच है। अन्यथा, इसमें sudo एक्सेस नहीं है।


3
सीधे शब्दों में sudo -n -l cmdऔर आप वर्तमान उपयोगकर्ता cmd को sudo एक्सेस है, तो बताया जाएगा। यदि आप परिणाम का परीक्षण करना चाहते हैं।
फिलिप ए। 19

1

सुडोल -एल

यह तय करने के लिए आपको पर्याप्त देना चाहिए कि क्या आपके पास निजी हैं जो आप चाहते हैं / आवश्यकता है।


1
यह अभी भी मेरे सिस्टम (उबंटू 16.04) में पासवर्ड मांगता है।
मारियो विलास

1

मुझे पता है कि यह एक सुपर पुराना प्रश्न है, लेकिन मुझे -n(गैर-संवादात्मक) ध्वज और -v/ के साथ भाग्य मिला -l। लेकिन, आपको आउटपुट का निरीक्षण करना होगा:

$ sudo -vn && sudo -ln  #User with cached credentials
User adminuser may run the following commands on computername:
    (ALL) ALL
$ sudo -vn && sudo -ln  #User who _can_ sudo but isn't cached
sudo: a password is required
$ sudo -vn && sudo -ln  #User who can't at all
Sorry, user nonadmin may not run sudo on computername.

कुछ आउटपुट-रिडायरेक्शन और ग्रेपिंग आपको वहां मिलेगा, शायद:

if (sudo -vn && sudo -ln) 2>&1 | grep -v 'may not' > /dev/null; then
  #they're cool
  exit 0 #Or, whatever
fi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.