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

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

मेरे पास पूर्ण सुडो विशेषाधिकार हैं, इसलिए मैंने यह कोशिश की:

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

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

मैं कैसे पुष्टि कर सकता हूं कि स्क्रिप्ट वास्तव में उस उपयोगकर्ता के तहत चल रही है?

आप इसके साथ कर सकते हैं su या sudo, दोनों की कोई जरूरत नहीं ।

sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"' 

के प्रासंगिक भागों man sudo:

-H   The -H (HOME) option requests that the security policy set     the HOME environment variable to the home directory of the     target user (root by default) as specified by the password     database.  Depending on the policy, this may be the default     behavior.
-u user     The -u (user) option causes sudo to run the specified      command as a user other than root.  To specify a uid      instead of a user name, use #uid.  When running commands as      a uid, many shells require that the '#' be escaped with a      backslash ('\').  Security policies may restrict uids to      those listed in the password database.  The sudoers policy      allows uids that are not in the password database as long      as the targetpw option is not set.  Other security policies      may not support this.

su यदि आप रूट हैं तो केवल पासवर्ड प्रदान किए बिना उपयोगकर्ता को स्विच कर सकते हैं । देखें कालेब का जवाब

आप संशोधित कर सकते हैं /etc/pam.d/su अनुमति देने के लिए फ़ाइल su पासवर्ड के बिना । इसे देखें उत्तर.

यदि आपने अपनी ऑथ फ़ाइल को निम्न में संशोधित किया है, तो कोई भी उपयोगकर्ता जो समूह का हिस्सा था somegroup सकता है su को otheruser बिना पासवर्ड के ।

auth       sufficient pam_rootok.soauth       [success=ignore default=1] pam_succeed_if.so user = otheruserauth       sufficient   pam_succeed_if.so use_uid user ingroup somegroup

फिर टर्मिनल से परीक्षण करें

rubo77@local$ su otheruser -c 'echo "hello from $USER"'hello from otheruser

यदि आप सुडो के बजाय सु का उपयोग करना चाहते हैं, तो मेरा मानना है कि आप ऐसा कुछ उपयोग कर सकते हैं:

su - <username> -c "<commands>"
  • - निर्दिष्ट उपयोगकर्ता के लॉगिन का अनुकरण करेगा
  • -c यह बताता है कि आप एक कमांड चलाना चाहते हैं

पुनश्च. दुर्भाग्य से मैं इस पद्धति के साथ आरवीएम का उपयोग करके रूबी को स्थापित करने में सक्षम नहीं हूं, लेकिन यह शायद संबंधित नहीं है ।

उपरोक्त उत्तर वास्तव में मेरे लिए उपयोगी हैं लेकिन वास्तविक प्रश्न का उत्तर देने के लिए । ..

मैं कैसे पुष्टि कर सकता हूं कि स्क्रिप्ट वास्तव में उस उपयोगकर्ता के तहत चल रही है?-

उपयोग करें:

ps -ef | grep <command-name>

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

ps aux | grep <command-name>

सुनिश्चित करें कि आप कमांड के साथ रूट उपयोगकर्ता पर स्विच करते हैं sudo su और फिर कमांड का उपयोग करें

su user -s <command>

उदाहरण के लिए: su www-data -s bin/magento cache:clean

मुझे भी यही समस्या थी । बस कमांड में टाइप करें screen -dmS testscreen यह आपके गैर-सुडो उपयोगकर्ता खाते पर एक अलग स्क्रीन बनाएगा और फिर आप इसे लॉग इन कर सकते हैं और जांच सकते हैं कि क्या यह स्क्रीन वहां है screen -ls.

आप उपयोग कर सकते हैं sudo ऐसा करना । सबसे पहले, आपको संशोधित करना होगा /etc/sudoers एक नियम जोड़ने के लिए फ़ाइल जो अनुमति देता है hudson उपयोगकर्ता प्रश्न में स्क्रिप्ट के लिए अन्य उपयोगकर्ता बनने के लिए । मान लेते हैं कि आपके पास एक है user1 खाता जिसे चलाने की आवश्यकता है /usr/local/bin/my_script.sh.

भागो visudo संशोधित करने के लिए sudoers फ़ाइल।फिर, निम्नलिखित का उपयोग करें sudo हडसन से स्क्रिप्ट चलाने के लिए कमांड ।

यह बहुत महत्वपूर्ण है कि आप उपयोग करें visudo संशोधित करने के लिए sudoers फ़ाइल को जगह में रखने से पहले त्रुटियों के लिए फ़ाइल की जांच करने के लिए । इसके अलावा, मैं एक त्वरित पढ़ने का सुझाव दूंगा man sudoers स्पष्ट रूप से समझने के लिए कि उपरोक्त आपके कॉन्फ़िगरेशन में जोड़ने से पहले क्या करता है ।

मैं एक ही स्थानीय मशीन की ओर इशारा करते.यह मुझे शेल स्क्रिप्ट या कमांड पासवर्ड रहित चलाने में सक्षम बनाता है ।

ssh target-user@localhost script-to-execute

सबसे पहले, मैं सुनिश्चित करता हूं कि होस्ट-उपयोगकर्ता ने अपनी सार्वजनिक कुंजी को लक्षित उपयोगकर्ता (उसी मशीन में) में सहेजा है । फिर मैं ऊपर दिखाए गए एसएसएच कमांड को निष्पादित करता हूं ।

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

सुडो-यू और लेफ्टिनेंट; उपयोगकर्ता और जीटी;और लेफ्टिनेंट; कमांड और जीटी;
< / कोड > < / पूर्व>