कैसे sudo का उपयोग कर पासवर्ड के लिए निष्पादन के बिना अनुमति देने के लिए?


15

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

$ sudo -s
$ vim /etc/sudoers
# User privilege specification
root         ALL=(ALL:ALL) NOPASSWD: ALL
javauser     ALL=(ALL:ALL) NOPASSWD: ALL

:wq
$ 4 -r--r-----   1 root root     615 2011-10-26 09:23 sudoers

एक बार जब मैं कमांड को निष्पादित करता हूं तो यह फिर से पूछता है "" javauser] javauser के लिए पासवर्ड: "। लेकिन मैंने पहले ही noPASSWD का उल्लेख किया है।

whoamiरिटर्न alexऔर मैं इसे इस sudoersफाइल में जोड़ रहा हूं

# User privilege specification
root    ALL=(ALL:ALL) ALL
alex ALL=NOPASSWD: ALL


# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

रनिंग मुझसे मेरा पासवर्ड, कोई विचार पूछ रहा है?


ऐसा लगता है कि पहले से ही एक बहुत ही समान प्रश्न है: askubuntu.com/questions/39281/… - क्या आपने वहां से उत्तर की कोशिश की है?
सर्गेई

सुनिश्चित करें कि आपके जावा कोड में आप अपने सिस्टम कॉल में "sudo / निरपेक्ष / पथ / से / कमांड" का उपयोग करते हैं। Btw। सुरक्षा कारणों से आपको sudoers फ़ाइल को संपादित करने के sudo visudoबजाय उपयोग करना चाहिए vim। इस तरह अगर आप एक गलती करते हैं, तो कार्यक्रम आपको इसके बारे में चेतावनी देता है।
con-f-use

यहाँ पाया जा सकता है कि वास्तव में मैंने क्या कोशिश की थी: gist.github.com/1315951

जवाबों:


28

आपको टर्मिनल प्रकार पर निम्नलिखित करने की आवश्यकता है, sudo visudoऔर फ़ाइल के अंत में इस तरह की एक पंक्ति जोड़ें जो आपको सूडो पासवर्ड टाइप किए बिना चलाने की आज्ञा निर्दिष्ट करता है (मेरा सुझाव है कि आप प्रत्येक कमांड का उपयोग करें जिसे आप प्रोग्राम में उपयोग करना चाहते हैं और न केवल सभी कार्यक्रमों को इसके द्वारा निष्पादित करने की अनुमति दें)

<yourusername> ALL=NOPASSWD: <command1>, <command2>

अब आप निर्दिष्ट कमांड को पासवर्ड के बिना चला सकते हैं जब तक आप उस कमांड को टाइप करते हैं sudo

यानी: आपको shutdown -r nowहर बार sudo पासवर्ड टाइप किए बिना चलाने की अनुमति देता है और आपका उपयोगकर्ता नाम 'joedoe' है

  1. sudo visudoएक टर्मिनल पर टाइप करें

  2. फ़ाइल के अंतjoedoe ALL=NOPASSWD: /usr/sbin/shutdown -r now में एक नई पंक्ति के रूप में जोड़ें , उस प्रोग्राम के लिए निरपेक्ष पथ का उपयोग करें जिसे आप उपयोग करने का प्रयास कर रहे हैं।

  3. अपने प्रोग्राम पर फिर आप sudo shutdown -r nowsudo पासवर्ड टाइप किए बिना उपयोग कर सकते हैं।

आप which <program name>टर्मिनल पर उपयोग करके किसी प्रोग्राम के लिए पूर्ण पथ पा सकते हैं ।

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

संपादित करें

आपको वास्तव में यह सुनिश्चित करने की आवश्यकता है कि आप जो परमिट सेट कर रहे हैं वह फ़ाइल के अंत में हो ताकि समूह की अनुमतियों से कुछ भी अधिलेखित न हो।


लगता है जैसे वह पहले से ही था।
con-f-use

अगर वह पहले से ही ऐसा कर रहा है तो आप उसे क्यों समझा रहे हैं कि वह सूडर्स फाइल को एडिट sudo visudoन करे और न करे vim? अगर उसने ऐसा किया तो यह काम करेगा।
ब्रूनो परेरा

1
@goOgle क्या आप sudoअपने कोड के अंदर कमांड के सामने टाइप कर रहे हैं ? आप इसे करने की जरूरत है भले ही आप sudoers फ़ाइल में nopasswd मजबूर किया। यानी: sudo <command>न केवल उपयोग करें <command>
ब्रूनो परेरा

1
मेरे लिए cmd = "whoami" रिटर्न brunoऔर cmd = "sudo whoami"रिटर्नroot
ब्रूनो परेरा

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