मेरी समस्या: मेरे पास एक पायथन कार्यक्रम है, और उपयोगकर्ता इसका उपयोग करके लॉन्च करता है sudo
। कभी-कभी मुझे उपयोगकर्ता का घर प्राप्त करना पड़ता है, और मैं केवल इसका नाम जानकर ऐसा कर सकता हूं:
import pwd
pwd.getpwnam(username)
तो: मैं उस उपयोगकर्ता का नाम कैसे प्राप्त कर सकता हूं जिसने प्रोग्राम लॉन्च किया था?
सलाह के लिए आभार। ठीक है, मैं अपने
—
रुबिक
euid
को स्थापित करूंगा SUDO_UID
।
sudo
छोड़ देताHOME
है (यह संकलन या रन-टाइम पर ओवरराइड किया जा सकता है)। लेकिन आप पर्यावरण चर का उपयोग करने में सक्षम हो सकते हैं या नहीं कर सकते हैं, इस पर निर्भर करता है कि आप क्या करना चाहते हैं यदि उपयोगकर्ता एक अलग मूल्य निर्दिष्ट करता हैHOME
(क्या होगा अगर बॉब रनHOME=/home/joe sudo your_script
?)। संभवत: किसी भी फाइल सिस्टम का उपयोग करने से पहले आपको अपने यूरोप को कॉलिंग उपयोगकर्ता ( सेट द्वाराSUDO_UID
) सेट करना चाहिए (इसके अलावा जो कुछ भी वास्तव में आपकी स्क्रिप्ट में रूट अनुमति की आवश्यकता है)।