Sudoers में एकल कमांड के लिए रिक्वायरमेंट को कैसे निष्क्रिय करना है?


44

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

जवाबों:


55

आप requirettyकिसी विशिष्ट उपयोगकर्ता के लिए या किसी विशिष्ट कमांड (या किसी विशिष्ट रन-एज़-उपयोगकर्ता या होस्ट के लिए) जैसे विकल्पों के लिए डिफ़ॉल्ट सेटिंग को ओवरराइड कर सकते हैं , लेकिन विशिष्ट उपयोगकर्ता के रूप में निष्पादित होने पर किसी विशिष्ट कमांड के लिए नहीं।

उदाहरण के लिए, यह सोचते हैं कि requirettyसंकलन डिफ़ॉल्ट विकल्प में सेट है, तो निम्न sudoersफ़ाइल दोनों की अनुमति देता है artbristolऔर bobनिष्पादित करने के लिए /path/to/programएक स्क्रिप्ट से रूट के रूप में। artbristolपासवर्ड की आवश्यकता नहीं है, जबकि पासवर्ड bobदर्ज करना होगा (संभवत: tty_ticketsबंद है और bobहाल ही में कुछ टर्मिनल पर अपना पासवर्ड दर्ज किया है)।

artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty

यदि आप विशिष्ट तर्कों के साथ कमांड के लिए सेटिंग बदलना चाहते हैं, तो आपको कमांड उपनाम (यह एक सिंटैक्स सीमा है) का उपयोग करने की आवश्यकता है। उदाहरण के लिए, निम्न टुकड़ा स्क्रिप्ट में artbristolचलने की अनुमति देता है /path/to/program --option, लेकिन /path/to/programअन्य तर्कों के साथ नहीं ।

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty

31

कुछ इस तरह:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty

यह काम कर सकता है, /etc/sudoersलेकिन एक /etc/sudoers.d/फ़ाइल में काम करने के लिए प्रकट नहीं होता है
8bitjunkie

जो मेरे लायक है, मेरे लिए, इस एडिट ने काम किया जब एक /etc/sudoers.d/फाइल में जोड़ा गया । सेंटोस 7.1
जॉन एरक

उपयोग करते समय यह मेरे लिए काम नहीं करता है /etc/sudoers.d/। सेंटोस 7.5 :(
स्टीफन लासवर्स्की

4

मैंने पाया कि यह मेरे लिए एक फ़ाइल का उपयोग करके ठीक काम करता है /etc/sudoers.d। यह सत्यापित करना काफी सरल है।

सबसे पहले, मैंने /etc/sudoers.d/01buildसामग्री के साथ बनाया :

build    ALL=(ALL)    NOPASSWD:/bin/date
Defaults:build !requiretty

फिर परीक्षण किया कि यह काम करता है:

ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015

फिर मैंने लाइन को संशोधित किया /etc/sudoers.d/01buildऔर हटा दिया Defaults:, और उसके बाद मुझे:

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.