पासवर्ड के बिना किसी अन्य उपयोगकर्ता को sudo की अनुमति दें


46

मैं एक विशिष्ट उपयोगकर्ता को 'su' करने में सक्षम होना चाहता हूं, जिससे मुझे पासवर्ड दर्ज किए बिना किसी भी कमांड को चलाने की अनुमति मिलती है।

उदाहरण के लिए:

यदि मेरा लॉगिन user1 था और जिस उपयोगकर्ता को मैं 'su' करना चाहता हूं वह user2 है:

मैं कमांड का उपयोग करेगा:

su - user2

लेकिन फिर यह मुझे संकेत देता है

Password:


पासवर्ड के लिए अन्य उपयोगकर्ता से पूछें। कम से कम दूसरे उपयोगकर्ता को पता है कि उसकी आईडी के तहत क्या किया गया है।
वैश्विक खानाबदोश

1
यह एक और भौतिक उपयोगकर्ता के साथ कुछ नहीं करना है। दोनों आईडी मेरी हैं। खाता बनाते ही मुझे पासवर्ड पता है। मैं हर बार पासवर्ड टाइप करना नहीं चाहता।
zio

क्या उपयोगकर्ता पर ssh करना ठीक रहेगा या क्या आपको विशेष रूप से एक शेल इनहेरिट करने की आवश्यकता है और काम करने के लिए su की आवश्यकता है?
bmike

1
@ ज़ियो ग्रेट उपयोग मामला। open -na Skypeआपके लिए काम नहीं करता है ?
bmike

जवाबों:


66

sudo आप के लिए बस इतना कर सकते हैं :)

हालांकि इसे थोड़ा सा विन्यास की आवश्यकता है, लेकिन एक बार करने के बाद आप केवल यही करेंगे:

sudo -u user2 -s

और आप एक पासवर्ड दर्ज किए बिना उपयोगकर्ता 2 के रूप में लॉग इन होंगे।

विन्यास

कॉन्फ़िगर sudo के लिए, आप के माध्यम से इसके विन्यास फाइल को संपादित करना होगा: visudo। नोट: यह कमांड viपाठ संपादक का उपयोग करके कॉन्फ़िगरेशन को खोलेगा , यदि आप इसके साथ असंबद्ध हैं, तो आपको export EDITOR=<command>निम्नलिखित पंक्ति को निष्पादित करने से पहले एक और संपादक (उपयोग करना ) सेट करना होगा । एक और कमांड लाइन संपादक को कभी-कभी आसान माना जाता है nano, इसलिए आप ऐसा करेंगे export EDITOR=/usr/bin/nano। आपको आमतौर पर सुपर उपयोगकर्ता विशेषाधिकार की आवश्यकता होती है visudo:

sudo visudo

यह फ़ाइल अलग-अलग अनुभागों, उपनामों, फिर चूक और अंत में आपके नियमों के अनुसार संरचित है। यह वह जगह है जहाँ आपको नई लाइन जोड़ने की आवश्यकता है। तो आप फ़ाइल के अंत में नेविगेट करें और इसे जोड़ें:

user1    ALL=(user2) NOPASSWD: /bin/bash

आप /bin/bashद्वारा भी प्रतिस्थापित कर सकते हैं ALLऔर फिर आप किसी भी कमांड को यूजर 2 के रूप में पासवर्ड के बिना लॉन्च कर सकते हैं sudo -u user2 <command>:।

यदि आप किसी भी उपयोगकर्ता को बस उपयोग करने के लिए स्विच करने में सक्षम होना चाहते हैं

user1    ALL=(ALL) NOPASSWD: /bin/bash

अपडेट करें

मैंने अभी-अभी Skype के संबंध में आपकी टिप्पणी देखी है। आप sudo की कॉन्फ़िगरेशन फ़ाइल में सीधे Skype जोड़ने पर विचार कर सकते हैं। मुझे लगता है कि आपने अपने एप्लिकेशन फ़ोल्डर में Skype स्थापित किया है :

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

तब आप टर्मिनल से कॉल करेंगे:

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype

यह ssh कुंजी विचार की तुलना में बहुत कम जटिल है, इसलिए इसका उपयोग तब तक करें जब तक आपको दूरस्थ पहुँच के लिए ssh कुंजियों की आवश्यकता न हो।
bmike

2
सुरक्षा-परिप्रेक्ष्य से ध्यान देने वाली एक बात यह है कि एक विशिष्ट कमांड को निर्दिष्ट करने का तात्पर्य है कि यह उपयोगकर्ता के लिए केवल पढ़ने के लिए कमांड होना चाहिए; अन्यथा, वे कमांड को कुछ और के साथ अधिलेखित कर सकते हैं और उपयोगकर्ता 2 के रूप में चला सकते हैं। और अगर आप उस बारे में परवाह नहीं करते हैं, तो आप यह भी निर्दिष्ट कर सकते हैं कि user1 किसी भी कमांड को user2 के रूप में चला सकता है और इसलिए एक सरल सुडोकू विन्यास है।
स्टेन कुर्दिज़िल

@StanKurdziel अच्छी बात! यद्यपि यह कुछ के बारे में पता होना है, यह वास्तव में शायद ही कभी उपयोगकर्ताओं को सिस्टम निष्पादन योग्य है जब तक आप जड़ नहीं हैं, लेकिन इस मामले में आपको sudo ;-) की आवश्यकता नहीं है, लेकिन आप इस टिप्पणी को जोड़ने के लिए सही हैं क्योंकि यह शायद ही कभी होता है कि मैंने शायद इसे एक बार से अधिक अनदेखा किया है।
ह्यूजेंस

इसके su - user2बजाय इसे व्यवहार के करीब लाने के लिए su user2, कमांड को संभवतः सभी को शामिल करना चाहिए sudo -u user2 -i, ताकि उपयोगकर्ता 2 के रूप में प्रारंभिक लॉगिन अनुकरण कर सके
गर्ट वैन डेन बर्ग

4

मैं दूसरे खाते के लिए सार्वजनिक / निजी ssh कुंजी सेट करूँगा और पहले खाते में कुंजी संग्रहीत करूँगा।

तब आप एक कमांड चला सकते हैं जैसे:

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

आपके पास अभी भी ऐसे मुद्दे होंगे जहां Skype एक उपयोगकर्ता खाते पर दो इंस्टेंस चल रहा है और उस प्रोग्राम द्वारा पढ़ी / लिखी गई फ़ाइलों पर विवाद हो सकता है। यह आपकी आवश्यकताओं के लिए भी पर्याप्त रूप से काम कर सकता है और आपको अपना दूसरा Skype उदाहरण चलाने के लिए iPod टच की आवश्यकता नहीं होगी।


1
यह किसी भी होस्ट पर किसी भी खाते में पासवर्ड-मुक्त लॉगिन के सामान्य मामले के लिए एक अच्छा सुरक्षित समाधान है, लेकिन मैं कहूंगा कि यह संभवतः ओवरकिल है जब दोनों खाते एक ही होस्ट पर हैं और एक ही उपयोगकर्ता के हैं।
calum_b

@scottishwildcat यह पासवर्ड की स्क्रिप्टिंग के विकल्प से अधिक सुरक्षित है और इसे स्पष्ट पाठ में फीड करना या चर का उपयोग करना और चाबी का गुच्छा में पासवर्ड को स्टोर करना और expectइंटरैक्शन को स्क्रिप्ट करने के लिए एक टूल का उपयोग करना है । मैं सिर्फ sudo su - blahअपना पासवर्ड इस्तेमाल करता हूं और टाइप करता हूं। मुझे लगता है कि एक टिप्पणी के रूप में रखने के लिए अन्य उत्तर सूडो को अच्छी तरह से कवर करते हैं।
bmike

ओह, मैं निश्चित रूप से सुझाव नहीं दे रहा था कि आपका उत्तर हटा दिया जाए ... मैंने भी वोट नहीं डाला, यह पूरी तरह से अच्छा जवाब है।
calum_b

हम कुल समझौते में प्रतीत होते हैं - जोड़ के लिए धन्यवाद - यदि आप इस पर सुधार कर सकते हैं तो जवाब में इसे संपादित करने के लिए स्वतंत्र महसूस करें।
bmike

स्वीकृत समाधान ( sudo -u user2 <...>) में यह लाभ है कि इसका दूर से उपयोग नहीं किया जा सकता है, जो सुरक्षा के लिए मदद कर सकता है - उपयोगकर्ता 1 के लिए कोई निजी कुंजी नहीं है जो चोरी हो सकती है।
गर्ट वैन डेन बर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.