2012-05-28 5 views
5

मैं अपने कार्यक्रम चलाने के लिए sudo उपयोग करने के लिए:मैं मूल उपयोगकर्ता के रूप में एक sudo'd प्रोग्राम से कमांड कैसे निष्पादित करूं?

sudo ./my_program 

मैं अपने कार्यक्रम से git clone को चलाने के लिए कोशिश कर रहा हूँ, लेकिन यह मेरा बजाय जड़ उपयोगकर्ता के लिए SSH कुंजी का उपयोग करने की कोशिश करता। क्या इस एकल कमांड को उपयोगकर्ता के रूप में निष्पादित करने का कोई तरीका है जिसने मूल रूप से मेरे प्रोग्राम को बुलाया था?

मुझे लगता है मैं कर सकते हैं:

su - original_user -c "git --version" 

लेकिन यह कैसे मैं मूल उपयोगकर्ता के उपयोगकर्ता नाम पता लगाने करते हैं? या क्या यह एक और सुरुचिपूर्ण समाधान है?

उत्तर

3

sudo मैनुअल दिखाता है कि $SUDO_USER आपको मूल उपयोगकर्ता का उपयोगकर्ता नाम देना चाहिए और $SUDO_UID मूल उपयोगकर्ता का यूआईडी देता है।

+0

और मूल उपयोगकर्ता के यूआईडी '' SUDO_UID'। –

0

मुझे वेब एप्लिकेशन से फ़ाइलों को बनाते समय सांबा के साथ NAS में यह समस्या थी।

इस मामले में मैंने चल रही प्रक्रियाओं को पुनर्प्राप्त किया और निर्धारित किया कि कौन सा उपयोगकर्ता सांबा चला रहा था। उस नाम को अलग करने के बाद, मेरे पास सही उपयोगकर्ता खाता था। शायद यह आपकी स्थिति के लिए भी काम करेगा?

इस मामले में मुझे लगता है कि आपको पीएस आउटपुट के माध्यम से फ़िल्टर करने और अपने प्रोग्राम का नाम देखने की आवश्यकता है। देखें कि क्या यह बैश पर परीक्षण करके काम करता है।

+0

क्षमा करें, यह दूसरी तरफ है। उपयोगकर्ताओं को सक्रिय करने के लिए ** ps -u ** का उपयोग करें, और यह निर्धारित करने के लिए ** कमांड ** के तहत मान का मूल्यांकन करें कि वे किस प्रक्रिया को शुरू कर चुके हैं। – Digitalis

संबंधित मुद्दे

 संबंधित मुद्दे