आप चलाकर क्यों (यह अलग है) जांच सकते हैं sudo sudo -V
।
लिनक्स रन पर उदाहरण के लिए:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
नोट: macOS / BSD पर, बस चलाएँ sudo sudo -V
:।
कुछ लिनक्स वितरण में डिफ़ॉल्ट सुरक्षा नीति प्लगइन के कारण उपरोक्त सूची प्रतिबंधित है।
यह आगे बताया गया है man sudoers
:
यदि secure_path
विकल्प सेट किया गया है, तो इसका मान PATH
पर्यावरण चर के लिए उपयोग किया जाएगा ।
secure_path
- सुडो से चलने वाले प्रत्येक कमांड के लिए पथ का उपयोग किया जाता है। यदि आप सुडू को चलाने वाले लोगों पर विश्वास नहीं करते हैं तो आपके पास एक सायन PATH
पर्यावरण चर है जिसका आप उपयोग करना चाहते हैं।
एक और उपयोग है यदि आप "रूट पथ" को "उपयोगकर्ता पथ" से अलग करना चाहते हैं। exempt_group
विकल्प द्वारा निर्दिष्ट समूह के उपयोगकर्ता इससे प्रभावित नहीं होते हैं secure_path
। यह विकल्प डिफ़ॉल्ट रूप से सेट नहीं किया गया है।
यदि ऐसी स्थिति है, तो आप sudo visudo
कॉन्फ़िगरेशन फ़ाइल को चलाकर और संपादित करके और अपने को संशोधित करके secure_path
(अतिरिक्त पथ को अलग करके :
) जोड़ सकते हैं या अपने उपयोगकर्ता को इसमें जोड़ सकते हैं exempt_group
(ताकि आप secure_path
विकल्पों से प्रभावित नहीं होंगे )।
या उपयोगकर्ता के PATH
अस्थायी पास करने के लिए , आप चला सकते हैं:
sudo env PATH="$PATH" my_command
और आप यह देख सकते हैं कि:
sudo env PATH="$PATH" env | grep ^PATH
इसे भी देखें: कैसे करें sudo
बचाव $PATH
?
अन्य कारण पर्यावरण के लिए अलग हो सकता है sudo
, ऐसा इसलिए है क्योंकि आप env_reset
अपनी sudoers
फ़ाइल में विकल्प सक्षम कर सकते हैं । यह एक नए, न्यूनतम वातावरण के साथ निष्पादित होने का आदेश देता है।
तो आप अपने उपयोगकर्ता के पर्यावरण चर को संरक्षित करने के env_keep
लिए विकल्प ( सुरक्षा कारणों से अनुशंसित नहीं ) का उपयोग कर सकते हैं :
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"