"सुडो" के बिना रूट के रूप में प्रोग्राम कैसे चलाया जाए?


10

मेरे पास ओएस एक्स पर एक निश्चित बाइनरी प्रोग्राम है जिसे केवल रूट के रूप में चलाया जा सकता है।

मैं sudoहर बार जब मैं इसे लागू करता हूं और पासवर्ड टाइप करता हूं, तो थक जाता हूं, और यह चाहूंगा कि जब मैं इसे नियमित रूप से आह्वान करूं, तो बिना पासवर्ड मांगे यह स्वचालित रूप से रूट के रूप में चलेगा।

कार्यक्रम का मालिक जड़ है और इसका समूह पहिया है।

मैंने chmod ug+sरूट / व्हील के निष्पादन पर उपयोगकर्ता और समूह को सेट करने का प्रयास किया, लेकिन जब मैं बिना sudo के प्रोग्राम चलाता हूं, तब भी यह शिकायत करता है कि यह केवल sudo या रूट के रूप में चल सकता है।


क्या इसे किसी विशेष समय पर या किसी घटना के होने पर चलाया जा सकता है?
user151019

9
पुराने समय के यूनिक्स गुरु सुझाव देते थे कि नियमित रूप से हाथ से रूट-ओनली ऑपरेशन को लागू करने का मतलब है कि आप इसे गलत कर रहे हैं। क्या यह कुछ ऐसा है जिसे स्वचालित किया जा सकता है? या डेमॉन के रूप में चला? अधिक विवरण एक अलग तरह के समाधान के लिए सुझाव ला सकता है।
dmckee --- पूर्व-मध्यस्थ ने बिल्ली का बच्चा

क्या कार्यक्रम वास्तव में रूट के स्वामित्व में है? Setuid / gid फ़ाइल के उपयोगकर्ता / समूह का उपयोग करेगा।
डैनियल बेक

2
... जहां "अधिक विवरण" में ऐसी चीजें भी शामिल हैं जैसे कि इस कार्यक्रम का बाइनरी एक एनएफएस माउंटेड वॉल्यूम पर है और क्या आप nosuidमाउंट विकल्प का उपयोग करते हैं ... इसके अलावा आपको नियमित रूप से सुपरयूजर के रूप में एक कार्यक्रम क्यों चलाना चाहिए।
जेडीबीपी

@ बहुत सारे मैक उपयोगकर्ता अपने कार्य केंद्र पर सर्वर सॉफ्टवेयर चलाते हैं और यह अक्सर उन चीजों के लिए रूट की आवश्यकता के लिए सेटअप होता है जिन्हें वास्तव में इसकी आवश्यकता नहीं होनी चाहिए ... लेकिन रूट के बिना चलने के लिए एक LAMP स्टैक को पुन: कॉन्फ़िगर करने से गधे में दर्द होता है। दूसरी ओर, दिन में 20 बार अपाचे को फिर से शुरू करना और हर बार सूडो टाइप करना भी गधे में दर्द होता है। यह एक सरल उपाय है।
अबी बर्थर्ट

जवाबों:


2

क्या आप सुनिश्चित हैं कि जिस प्रोग्राम को आप निष्पादित करने का प्रयास कर रहे हैं, वह वास्तव में एक बाइनरी है, न कि शेल स्क्रिप्ट। अधिकांश गोले सुसाइड स्क्रिप्ट को नजरअंदाज करते हैं क्योंकि वे वास्तव में, वास्तव में सुरक्षित रूप से कठिन हैं। चेक करने का एक आसान तरीका fileप्रोग्राम पर कमांड का उपयोग करना है ।


17

आपकी समस्या का आधा समाधान:

sudoers फ़ाइल में, निम्नलिखित जोड़ें:

username ALL= NOPASSWD: /path/to/command

फिर कमांड लाइन से, आप टाइप कर सकते हैं:

sudo command

और यह आपके पासवर्ड के लिए पूछे बिना कमांड चलाएगा। यह कमांड रूट के रूप में चलेगी।

ध्यान दें, आपको वास्तविक उपयोगकर्ता नाम के साथ उपयोगकर्ता नाम बदलने की आवश्यकता होगी।


नीचे सबसे अच्छा जवाब खोजने के लिए चकित। धन्यवाद!
CDR

FYI करें, दूसरे आधे को हल करने के लिए (sudo कमांड टाइप नहीं करने के लिए) एक शेल उर्फ ​​बनाएं जिसमें कमांड में sudo शामिल हो (जैसे surm = sudo rm "$ @")
Walter

4

यदि आप वास्तव में इसे किसी कारण के लिए डेमॉन के रूप में आमंत्रित नहीं कर सकते हैं (यह प्रश्न उस उदाहरण में प्रासंगिक होगा) , इस विधि को एक साथ हैक किया जा सकता है, लेकिन यह बहुत गंदा है, और बिल्कुल भी सुरक्षित नहीं है।

अवधारणा को एक AppleScript के साथ लॉन्च करना है। आपको पहले यह जानना होगा कि कमांड लाइन से प्रक्रिया को कैसे शुरू किया जाए (जो कि यदि आप पहले से ही सूडो का उपयोग कर रहे हैं, तो इसका मतलब है कि आपको सेट होना चाहिए)। आप do shell scriptकमांड का उपयोग करके उस प्रक्रिया को लॉन्च करेंगे , और sudo का उपयोग करने के बजाय आप AppleScript में अपने क्रेडेंशियल्स लिखेंगे:

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

मैं इस बारे में असुरक्षित होने के बारे में बात दोहराता हूं: यह आपके विज्ञापन की योजना बना रहा है, जो योजनाबद्ध पाठ में लिखी गई है। यदि संभव हो तो, आपको इसे एक लॉन्चडैम के रूप में पृष्ठभूमि के लिए कोई रास्ता निकालना चाहिए।


आपके मैक के लिए "
रनस

2

OSX मान लें कि आपके पास जो प्रोग्राम है, वह / usr / लोकल / बिन / YourProgramName में है ... इस समस्या को निम्नलिखित कमांड को हल करने के लिए, केवल फाइल के बजाय फाइलों में निहित फ़ाइल पदानुक्रम के लिए यूजर आईडी / ग्रुप आईडी बदलने के लिए। ।

sudo chown -R $(whoami) /usr/local/bin/

... तो टर्मिनल में आपका प्रोग्रामनाम, $ YourProgramName


मेरी समस्या यह थी कि स्थापित कार्यक्रम उचित अनुमतियों के बिना स्थापित किए गए थे, इसलिए मैंने इसे उन कार्यक्रमों की निर्देशिकाओं पर चलाया और अब वे ठीक w / o sudo चलाते हैं। धन्यवाद!
atwixtor

0

तुम कर सकते हो

sudo tcsh

जो आपको एक मूल खोल में डाल देगा।


0

अगर आईडी = 0 के साथ चल रहा है तो प्रोग्राम खुद चेक करता है


1
... निश्चित रूप से यह अगर यह सेट-यूआईडी सुपरयुसर है (ऊपर बताई गई चिंताओं को छोड़कर) होगा। जो आप शायद कहना चाह रहे हैं, वह यह है कि कार्यक्रम वास्तविक UID 0 के बजाय केवल प्रभावी UID 0 के लिए जाँच रहा है
JdeBP

-1

आप कर सकते थे sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE

फिर भी, मैं dmckee की टिप्पणी से पूरी तरह सहमत हूं।


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