यदि मैं आपकी टिप्पणियों को सही ढंग से समझता हूं, तो यहां मुद्दा यह है कि कमांड एक कनेक्शन के माध्यम से जारी किया जाएगा जिसमें उस पासवर्ड को दर्ज करने की कोई क्षमता नहीं है जो सूडो अनुरोध करने के लिए चूकता है। इसके अलावा, कई OS वितरणों में, sudo को TTY की आवश्यकता के लिए डिफ़ॉल्ट होगा - जो कि यह कार्यक्रम नहीं हो सकता है।
हालाँकि, sudo एक बहुत ही बारीक अनुमत अनुमतियाँ संरचना रखने में सक्षम है, जिससे एक या एक से अधिक उपयोगकर्ताओं को पासवर्ड और TTY के बिना एक विशेष कमांड जारी करने की अनुमति मिल सकती है। नीचे, मैं आपकी आवश्यकताओं के लिए इसे कॉन्फ़िगर करने के तीन तरीके दिखाऊंगा। जो भी आप चुनते हैं, उपयोगकर्ता अब sudo rndc reload
पासवर्ड दर्ज किए बिना कमांड जारी कर सकेगा ।
(इसके अलावा, यह अनावश्यक हो सकता है, लेकिन ... कृपया इसे संपादित करने से पहले अपने sudoers फ़ाइल की एक बैकअप प्रतिलिपि बनाने के लिए याद रखें, एक शेल रखने के लिए जहां आप रूट ओपन हैं, यदि आपको बैकअप को वापस करने की आवश्यकता है, और संपादित करने के लिए इसके visudo
बजाय इसका उपयोग करना sudo vi /etc/sudoers
। उम्मीद है कि ये सावधानियां अनावश्यक होंगी, लेकिन ... उनके पास होने के लिए बेहतर है और रिवर्स की तुलना में उनकी आवश्यकता नहीं है!)
1. यदि आप किसी भी अनुरोध के लिए TTY की आवश्यकता नहीं चाहते हैं
TTY आवश्यकताओं से छुटकारा पाने का सबसे आसान तरीका (यदि कोई मौजूद है) यह सुनिश्चित करना है कि जिस रेखा के साथ शुरुआत होती Defaults
है /etc/sudoers
उसमें शब्द नहीं है requiretty
- इसके बजाय, इसमें शामिल होना चाहिए !requiretty
। हालाँकि, यदि आप ऐसा करते हैं, तो इसका मतलब है कि किसी भी sudo कमांड को tty की आवश्यकता नहीं होगी!
आपको लाइन जोड़ने की भी आवश्यकता होगी
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
2. यदि आप इस एक को छोड़कर सभी उपयोगकर्ताओं के लिए TTY की आवश्यकता चाहते हैं
यह इस तरह के एक उपयोगकर्ता के लिए एक डिफ़ॉल्ट सेट करके किया जा सकता है:
Defaults:rndcuser !requiretty
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
3. यदि आप इस एक उपयोगकर्ता द्वारा एक कमांड को छोड़कर सभी आदेशों के लिए एक TTY आवश्यक करना चाहते हैं
यह कुछ अधिक जटिल है, जो sudoers फ़ाइल के सिंटैक्स के कारण है। आपको कमांड के लिए कमांड अलियास बनाने की आवश्यकता होगी, और फिर उस कमांड उपनाम के लिए एक डिफ़ॉल्ट सेट करें, जैसे:
Cmnd_Alias RNDC_CMD = /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
Defaults!RNDC_CMD !requiretty
rndcuser ALL = (root) NOPASSWD: RNDC_CMD
sudo
है। इसके लिए उसका उपयोग करने केsudo
लिए आपकी व्यावसायिक आपत्तियां क्या हैं ?