क्या उपयोगकर्ता को केवल 2 दिनों के लिए कमांड निष्पादित करने की अनुमति देने का कोई तरीका है


13

एक विशिष्ट समय के लिए एक sudo कमांड की अनुमति कैसे दें? क्या केवल sudoers फ़ाइल में 2 दिनों के लिए एक विशिष्ट कमांड करने का अधिकार देने का कोई तरीका है?

जवाबों:


18

Sudoers फ़ाइल समय आधारित प्रतिबंध का समर्थन नहीं करती है लेकिन एक आसान तरीका है। /etc/sudoers.d/(साथ sudo visudo -f /etc/sudoers.d/yourfile) में अपने परिवर्तन के साथ एक फ़ाइल बनाएँ :

एक फ़ाइल में जोड़ें (उदाहरण:) file.shनिम्नलिखित

mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile

और यह आपके परिवर्तन को अक्षम कर देगा:

 sudo at -f file.sh 2pm + 2 days

उदाहरण:

at -f file.sh 2pm + 2 days
warning: commands will be executed using /bin/sh
job 4 at Thu Oct 15 14:00:00 2015

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

atरिबूट भी बचता है इसलिए इस तरह की चीजों का उपयोग करने के लिए एक अच्छा उपकरण है। और आप एक्सेस टॉगल कर सकते हैं ...

sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 2 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 4 days
sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 6 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 8 days

और उस उपयोगकर्ता को पागल कर दें (अब मैं ऐसा कर सकता हूं)।

में पढ़ें /etc/sudoers/:

# As of Debian version 1.7.2p1-1, the default /etc/sudoers file created on
# installation of the package now includes the directive:
# 
#   #includedir /etc/sudoers.d
# 
# This will cause sudo to read and parse any files in the /etc/sudoers.d 
# directory that do not end in '~' or contain a '.' character.
# 
# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.
# 
# Note also, that because sudoers contents can vary widely, no attempt is 
# made to add this directive to existing sudoers files on upgrade.  Feel free
# to add the above directive to the end of your /etc/sudoers file to enable 
# this functionality for existing installations if you wish!
#
# Finally, please note that using the visudo command is the recommended way
# to update sudoers content, since it protects against many failure modes.
# See the man page for visudo for more information.

अगर मैं इसे सही ढंग से पढ़ता हूं तो यह किसी भी फाइल को "" के साथ निष्पादित नहीं करेगा। नाम में कहीं भी तो 1 mvआदेश मैंने "रखा।" सामने यह भी अदृश्य बनाने में। अगर सही ढंग से मान लिया जाए तो आप "a" रख सकते हैं। कहीं भी। "~" के साथ सावधान, कि एक gEdit जैसे संपादकों द्वारा "बैकअप" सुविधा के रूप में उपयोग किया जाता है।


atडिफ़ॉल्ट रूप से स्थापित नहीं है। स्थापित करने के लिए

sudo apt-get install at

थैंक्स, मैंने पहले से ही इसके बारे में सोचा था, लेकिन स्थिति कई उपयोगकर्ताओं को अपने स्वयं के उद्देश्य के लिए फ़ाइल का उपयोग करने की है, इसलिए बैकअप के लिए संभव नहीं है और हर बार bozz अन्य उपयोगकर्ताओं को भी एक ही sudoers फ़ाइल को संशोधित कर रहे हैं, इसलिए जब मैं पुरानी फ़ाइल को पुनर्स्थापित करता हूं ओह्टर यूजर्स ने किए बदलाव ...
अब्बास कपासी

2
इस बारे में कैसे सर? ओह और हो सकता है कि मैं आपके कई उपयोगकर्ताओं को भी सुझाव दूं कि वे खुद भी अपने फ़ाइलनाम के साथ sudoers.d का उपयोग करें। सूदरों के संपादन से बहुत बेहतर लगता है।
रिनविंड

@AbbasKapasi एक नई फ़ाइल बनाता /etc/sudoers.dहै जिसका उपयोग आपके अन्य उपयोगकर्ताओं द्वारा नहीं किया जाएगा।
मुरु

मुझे लगता है कि पूरे उत्तर में प्रयुक्त कमांड को होना चाहिए था mv, नहीं cp
Cululhu

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