उस उपयोगकर्ता का नाम कैसे प्राप्त करें जिसने `sudo` लॉन्च किया है


12

मेरी समस्या: मेरे पास एक पायथन कार्यक्रम है, और उपयोगकर्ता इसका उपयोग करके लॉन्च करता है sudo। कभी-कभी मुझे उपयोगकर्ता का घर प्राप्त करना पड़ता है, और मैं केवल इसका नाम जानकर ऐसा कर सकता हूं:

import pwd

pwd.getpwnam(username)

तो: मैं उस उपयोगकर्ता का नाम कैसे प्राप्त कर सकता हूं जिसने प्रोग्राम लॉन्च किया था?


1
सबसे विन्यास, इंडर पर्यावरण चर बरकरार sudoछोड़ देता HOMEहै (यह संकलन या रन-टाइम पर ओवरराइड किया जा सकता है)। लेकिन आप पर्यावरण चर का उपयोग करने में सक्षम हो सकते हैं या नहीं कर सकते हैं, इस पर निर्भर करता है कि आप क्या करना चाहते हैं यदि उपयोगकर्ता एक अलग मूल्य निर्दिष्ट करता है HOME(क्या होगा अगर बॉब रन HOME=/home/joe sudo your_script?)। संभवत: किसी भी फाइल सिस्टम का उपयोग करने से पहले आपको अपने यूरोप को कॉलिंग उपयोगकर्ता ( सेट द्वारा SUDO_UID) सेट करना चाहिए (इसके अलावा जो कुछ भी वास्तव में आपकी स्क्रिप्ट में रूट अनुमति की आवश्यकता है)।
गिल्स एसओ- बुराई को रोकना '

सलाह के लिए आभार। ठीक है, मैं अपने euidको स्थापित करूंगा SUDO_UID
रुबिक

जवाबों:


22

जब आप sudoपर्यावरण के चर के एक जोड़े के साथ कुछ आग लगाते हैं, तो विशेष रूप से मुझे लगता है कि आप ढूंढ रहे हैं SUDO_UID। ये पर्यावरण चर के सामान्य चैनलों के माध्यम से चलने वाले किसी भी कार्यक्रम के लिए सुलभ होना चाहिए।

आप इस तरह धोखा देकर अन्य चीजों को खोल से देख सकते हैं: sudo env | grep SUDO


1
+1 वाह! आपका बहुत बहुत धन्यवाद! मुझे इसी की तो तलाश थी। मुझे लगता है कि मैं का उपयोग करेगा SUDO_UIDऔर SUDO_USER। फिर से धन्यवाद।
माणिक

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