यह दृढ़ता से इस बात पर निर्भर करता है कि आप अपने कार्यक्रम को किस तरह से sudo
या साथ में बुलाते हैं su
।
इस पल में जिस सिस्टम पर हूं, जैसे:
.bashrc
COMMAND $HOME $USER Env. $PATH
1. sudo -i (root) root root [1]
2. sudo -s (USER) root USER /home/${USER}/bin:[1]
3. sudo /bin/bash (USER) root USER /home/${USER}/bin:[1]
4. sudo su (root) root USER [1]:/usr/games:/usr/local/games
5. sudo su - (root) root root [1]
जहां [1] = / usr / स्थानीय / sbin: / usr / स्थानीय / बिन: / usr / sbin: / usr / बिन: / sbin: / bin
Env = पर्यावरण चर 1 और 5 के लिए रीसेट होते हैं, जो USER द्वारा US $ में लिए गए हैं 2,3,4।
एक स्क्रिप्ट, या कि एक अलग विकल्प अलग देख सकते हैं के साथ शुरू की है एक कार्यक्रम तो $PATH
, $HOME
, इसके खोल अलग पढ़ सकते हैं .bashrc
, .profile
पर्यावरण चर और। यह संबंधित फाइल को पढ़ता है $HOME
। प्रत्येक उपयोगकर्ता अपने वातावरण को एक अलग तरीके से संशोधित कर सकता है (चर $PATH
, .bashrc, .profile, .bash_profile, alias ...)। विशेष रूप से एक उपयोगकर्ता में निर्देशिकाओं का एक अलग क्रम हो सकता है $PATH
और, एक परिणाम के रूप में, एक स्क्रिप्ट /home/$USER/bin
इसके बजाय उदाहरण के लिए रूट से अपेक्षित पथ में एक कमांड निष्पादित कर सकता है ।
आप प्रोग्राम को उसी प्रकार चला सकते हैं sudo -i
जैसे आप लॉग इन के साथ रूट किए गए थे su -
, लेकिन यदि आप इसे sudo MyCommand
या उसके साथ चलाते हैं तो आपके पास अलग व्यवहार हो सकता है su -c MyCommand
।
से man su
:
विवरण भाग में:
वर्तमान वातावरण को नए शेल में पास किया गया है । $ PATH का मान सामान्य उपयोगकर्ताओं के लिए / bin: / usr / bin पर रीसेट किया जाता है , या / sbin: / bin: / usr / sbin: / usr / bin के लिए सुपरयुसर
...
विकल्प भाग में:
- -l , --login
एक ऐसा वातावरण प्रदान करता है जैसा कि उपयोगकर्ता को उम्मीद है कि उपयोगकर्ता ने सीधे लॉग इन किया होगा ।
आदमी से sudo
-i , --login
लॉगिन शेल के रूप में लक्ष्य उपयोगकर्ता के पासवर्ड डेटाबेस प्रविष्टि द्वारा निर्दिष्ट शेल चलाएं। इसका मतलब यह है कि लॉगिन-विशिष्ट संसाधन फ़ाइलों जैसे कि .profile या .login को शेल द्वारा पढ़ा जाएगा। यदि कोई कमांड निर्दिष्ट है, तो इसे शेल के -c विकल्प के माध्यम से निष्पादन के लिए शेल में पास किया जाता है। यदि कोई कमांड निर्दिष्ट नहीं है, तो एक इंटरैक्टिव शेल निष्पादित किया जाता है। sudo
शेल चलाने से पहले उस उपयोगकर्ता की होम निर्देशिका में परिवर्तन करने का प्रयास करता है। कमांड एक वातावरण के साथ चलाया जाता है, जिसे एक उपयोगकर्ता लॉग इन के समय प्राप्त करता है । Sudoers में कमांड एनवायरनमेंट सेक्शन (5) मैनुअल डॉक्युमेंट्स -i विकल्प कैसे पर्यावरण को प्रभावित करता है जिसमें कमांड कमांड चलाया जाता है जब sudoers पॉलिसी उपयोग में है।