पासवर्ड के बिना किसी अन्य उपयोगकर्ता के रूप में स्क्रिप्ट कैसे चलाएं?


145

मेरे पास script.sh है जिसे user2 के रूप में चलाया जाना चाहिए। हालाँकि, यह स्क्रिप्ट केवल मेरे अनुप्रयोग में user1 के तहत ही चलाई जा सकती है।

मैं निम्नलिखित कमांड चलाना चाहूंगा:

su user2 -C script.sh

लेकिन पासवर्ड के बिना चलाने में सक्षम हो।

मैं यह भी चाहता हूं कि यह बहुत प्रतिबंधक हो, क्योंकि user1 में केवल user2 के तहत script.sh चला सकता है और कुछ नहीं।

मैंने sudoers फ़ाइल के साथ ऐसा करने की कोशिश की है और बस कोशिश करने के घंटों के बाद अंतहीन उलझन में हूं।

यदि कोई व्यक्ति इसका स्पष्ट उदाहरण दे सकता है कि यह कैसे पूरा किया जा सकता है (इसके बजाय कुछ सामान्य उपयोग की तरह sudoers), तो इसकी बहुत सराहना की जाएगी।


15
मैं विशेष रूप से बंद के साथ नहीं है। यह एक प्रश्न है कि किसी विशेष तरीके से सिस्टम को कैसे प्रोग्राम किया जाए; जैसे, यह शेल प्रोग्रामिंग के बारे में है और SO के दायरे में है जो प्रोग्रामिंग के बारे में प्रश्नों के लिए है। यह स्पष्ट है कि बहुत से लोग इसे इतने ऑफ-टॉपिक के रूप में नहीं देखते हैं कि इसे डाउन-वोट किया जाना चाहिए; सवाल और जवाब सभी में काफी संख्या में अप-वोट होते हैं।
जोनाथन लेफलर

जवाबों:


121

कॉल करें visudoऔर इसे जोड़ें:

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh

आदेश पथ निरपेक्ष होना चाहिए ! फिर sudo -u user2 /home/user2/bin/test.shएक user1शेल से कॉल करें । किया हुआ।


3
Ubuntu मदद पर sudoers प्रारूप का एक अच्छा वर्णन है
सूडोर्स के

तो कैसे सभी उपयोगकर्ताओं के लिए इस पैमाने को केवल user1 के बजाय user2 के रूप में चलाने के लिए होगा?
जिग्गंजेर

193

चलाने की कोशिश करें:

su -c "Your command right here" -s /bin/sh username

यह उपयोगकर्ता नाम के रूप में कमांड को चलाएगा जो आपके पास उस उपयोगकर्ता के रूप में sudo करने की अनुमति है।


17
इसने पूरे सूडो अधिकारों के साथ सामान्य उपयोगकर्ता के रूप में काम किया:sudo su -c "Your command right here" -s /bin/sh otheruser
रुबो77

5
किसी भी मैक उपयोगकर्ताओं के लिए बस एक नोट, जाहिरा तौर पर वाक्यविन्यास थोड़ा अलग है su username -c "command":।
एनएचडीआईएल

1
यदि आपका शुरू करने की कोशिश screenकिसी अन्य उपयोगकर्ता के रूप में तो यह मददगार हो सकता है - linuxquestions.org/questions/linux-software-2/...
मिंट

2
यदि username(या प्रश्न में user2) , स्वयं एक पासवर्ड है, तो इसके लिए संकेत को छोड़ना नहीं होगा। अन्य जवाब है: कोई पासवर्ड की जरूरत नहीं है, दोनों user1 और user2।
दर्शन

1
`su -c "Your command right here" -s /bin/sh username`

उपरोक्त कमांड सही है, लेकिन Red Hat पर यदि सेलिनक्स लागू हो रहा है तो यह क्रोन को किसी अन्य उपयोगकर्ता के रूप में स्क्रिप्ट निष्पादित करने की अनुमति नहीं देगा। उदाहरण; execl: couldn't exec /bin/sh execl: Permission denied

मुझे सेटाउबल्सशूट और सेटूल स्थापित करने थे और इसे अनुमति देने के लिए निम्नलिखित को चलाना था:

yum install setroubleshoot setools
sealert -a /var/log/audit/audit.log
grep crond /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.p
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.