सस्पेंड से जागने के बाद मैं कैसे सूडो को हमेशा पासवर्ड के लिए मजबूर कर सकता हूं?


15

मान लें कि मैं एक कमांड निष्पादित करता हूं sudo, तो अगर मैं sudoअगले 15/5 मिनट के भीतर उपयोग करता हूं (यह सुनिश्चित नहीं है कि यह मुझे कितनी देर तक याद है) यह मुझे पासवर्ड के लिए संकेत नहीं देगा। अगर मैं इसे कम से कम लंबे समय तक इस्तेमाल नहीं करता तो यह मुझे फिर से संकेत देगा।

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

तो मैं इसे कैसे बना सकता हूं, चाहे मैं कितनी भी देर तक इस्तेमाल न करूं sudo, लेकिन सस्पेंड होने के बाद एक बार फिर से लॉग इन करने पर यह मुझे पासवर्ड के लिए निश्चित रूप से प्रेरित करेगा, भले ही मैं अभी भी उस समय सीमा के भीतर हूं, जहां मैं हूं 15/5 मिनट का उपयोग sudoनहीं अभी तक पारित नहीं किया है?

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

मैं Ubuntu गनोम 15.10 को गनोम 3.18 के साथ चला रहा हूं।


1
अच्छा सवाल है, लेकिन आप पागल क्यों हैं? क्योंकि यदि आपके अलावा अन्य व्यक्ति को पता है कि आपके लॉगिन पासवर्ड का उपयोग करने से रोका नहीं जा सकता हैsudo
एडवर्ड टॉर्वाल्ड्स

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

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

@edwardtorvalds: ठीक है, मैं फिर से लॉगिन कर सकता हूं, और फिर चला जाऊंगा (ऐसा नहीं है कि मैं बहुत बार ऐसा करता हूं), और फिर जब कोई आता है तो बुरा होगा यदि वे सिर्फ उपयोग कर सकते हैं sudo। मुझे पता है कि अपने खुद के कंप्यूटर के लिए थोड़ा अजीब लगता है, लेकिन मैं एक और उबंटू कंप्यूटर पर कुछ रखरखाव का काम कर सकता था, और फिर जब मैं उपयोगकर्ता को फिर से लॉग इन करता हूं, तो टर्मिनल को बंद करना असुविधाजनक हो सकता है, लेकिन मैं नहीं करता उन्हें sudoअधिकार चाहिए।

1
लागू करना `; बाहर निकलें (सात कीस्ट्रोक्स) मेरे लिए बहुत आसान लगता है। आप किस प्रकार के रख-रखाव से दूर चलते हैं, क्योंकि मैं इस बारे में ज्यादा नहीं सोच सकता कि मैं बीच में सस्पेंड होने का मौका लूं।
मार्क

जवाबों:


19

से man sudo:

     -K, --remove-timestamp
                 Similar to the -k option, except that it removes the user's
                 cached credentials entirely and may not be used in conjunc‐
                 tion with a command or other option.  This option does not
                 require a password.  Not all security policies support cre‐
                 dential caching.

तो क्या आप चाहते हैं कि आपका उपयोगकर्ता sudo -Kहर बार सिस्टम को निलंबित करने के लिए चलाए ।

Ubuntu 15.04+ (सिस्टमड)

इसमें स्क्रिप्ट को रखकर Ubuntu 15.04+ पर किया जा सकता है /lib/systemd/system-sleep/

  1. भागो sudo nano /lib/systemd/system-sleep/disable_sudo_user( userसुविधा के लिए अपने उपयोगकर्ता नाम के साथ बदलें );
  2. निम्नलिखित स्क्रिप्ट में पेस्ट करें ( userअपने उपयोगकर्ता के उपयोगकर्ता नाम के साथ बदलें ):
#!/bin/sh
case $1/$2 in
    pre/suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. हिट CTRL+ O, ENTERऔर CTRL+ X;

  2. भागो sudo chmod o+x /lib/systemd/system-sleep/disable_sudo_user;


हाइबरनेशन / हाइब्रिड-स्लीप के लिए भी इसे सक्षम करने के लिए, इस स्क्रिप्ट का उपयोग करें:

#!/bin/sh
case $1 in
    pre)
        su user -c 'sudo -K'
        ;;
esac

पिछले उबंटू संस्करण (उपस्टार्ट)

इसमें स्क्रिप्ट को रखकर पिछले Ubuntu संस्करणों पर किया जा सकता है /etc/pm/sleep.d/

  1. भागो sudo nano /etc/pm/sleep.d/disable_sudo_user( userसुविधा के लिए अपने उपयोगकर्ता नाम के साथ बदलें );
  2. निम्नलिखित स्क्रिप्ट में पेस्ट करें ( userअपने उपयोगकर्ता के उपयोगकर्ता नाम के साथ बदलें ):
#!/bin/sh
case $1 in
    suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. हिट CTRL+ O, ENTERऔर CTRL+ X;

  2. भागो sudo chmod o+x /etc/pm/sleep.d/disable_sudo_user;


हाइबरनेशन के लिए भी इसे सक्षम करने के लिए, इस स्क्रिप्ट का उपयोग करें:

#!/bin/sh
case $1 in
    suspend|hybernate)
        su user -c 'sudo -K'
        ;;
esac

2
अगर आप उपयोग करते तो यह मजेदार होता sudo -u user sudo -k। : डी
मुरु

@ ममरू ने ऐसा ही किया लेकिन किसी कारण से यह थोड़ा मूर्खतापूर्ण लग रहा था:
कोस

क्षमा करें, कुछ समय के लिए कोई शेल कोड नहीं लिखा है, यह वास्तव में क्या करता pre/*)है? :)

@PranoidPanda यह चला गया है, अद्यतन देखें। यहाँ देखें (विवरण, दूसरा पैराग्राफ): दो तर्कों systemd-suspend.serviceको /lib/systemd/system-sleep/पारित करने में लिपियों को बुलाता है; $1यह preपूर्व-नींद की घटनाओं के लिए या postबाद की नींद की घटनाओं के लिए है, और $2यह या तो है suspend, hybernateया hybrid-sleep; और pre/*सभी में से pre/किसी एक के संयोजन को पकड़ने का मतलब था suspend, hybernateया hybrid-sleepजब से आपने निलंबन के लिए स्पष्ट रूप से पूछा, मैंने इसे बदल दिया pre/suspend
कोस

1
ध्यान देने वाली बात यह है कि आप इसे पुराने ubuntu में भी कर सकते हैं, यह सिर्फ एक तंत्र है जो अलग है, अर्थात /etc/pm/sleep.dस्क्रिप्ट का उपयोग करना।
हॉब्स

3

केवल अगर तुम उस पागल हो! आप के -Kविकल्प का उपयोग कर सकते हैं sudo

-K, --reset-timestamp
       When used without a command, invalidates the user's cached credentials.  
       In other words, the next time sudo is run a password will be required.  
       This option does not require a password and was added to allow a user to revoke
       sudo permissions from a .logout file.

       When used in conjunction with a command or an option that may require a 
       password, this option will cause sudo to ignore the user's cached credentials.  
       As a result, sudo will prompt for a password (if one is required by the 
       security policy) and will not update the user's cached credentials.

       Not all security policies support credential caching.

उदाहरण के लिए,

sudo -K <command>

या आप अपने कंप्यूटर को रोबोट द्वारा संरक्षित धातु के बक्से में छोड़ सकते हैं :)


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

इसके अलावा, मुझे लगता है कि आप मतलब है -Kऔर नहीं -k

वैसे भी, यह अधिक उपयोगी हो सकता है।

1

फिर भी एक और तरीका

टाइप करें 'sudo visudo'

उस रेखा पर जाएं जो कहती है: 'Defaults env_reset'

और इसमें परिवर्तन करें:

'डिफॉल्ट्स एनवी_रेसेट, टाइमस्टैम्प_टाइमआउट = 0

फिर फाइल को सेव करें।

टाइमआउट को 0 पर सेट करके, सिस्टम आपको हर बार पासवर्ड के लिए संकेत देगा।


इस जबकि करता है (तकनीकी रूप से बोल रहा है) को पूरा क्या ओ पी के लिए, ज्यादातर स्थितियों के लिए यह overkill पूछ रहा है। उस ने कहा, यदि आप वास्तव में पागल हैं (या हर बार जब आप संभावित रूप से खतरनाक कुछ करते हैं, तो विराम के लिए एक अतिरिक्त कदम चाहते हैं), यह एक व्यवहार्य विकल्प हो सकता है।
बजे एक CVn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.