sudo, runuser, su काम नहीं करता है जैसा कि मुझे उम्मीद है कि जब रूट के रूप में "echo $ HOME" के रूप में चलाया जाएगा।


2

जब मैं इन कमांड को रन करता हूं तो यह आउटपुट के रूप में दिखाया जाता है। / जड़

$ sudo -u someuser -i "echo $HOME"
/root
$ runuser -l someuser -c "echo $HOME"
/root    
$ su - someuser -c "echo $HOME"
/root

मुझे क्या उम्मीद थी

/home/someuser

जब मैं पर्यावरण का निरीक्षण करने के लिए env कमांड चलाता हूं तो यह गृह चर को सही ढंग से रिपोर्ट करता है।

$ su - someuser -c "env"
...  
HOME=/home/someuser
...

$ sudo -u someuser -i "env"  
...  
HOME=/home/someuser
...

$ runuser -l someuser -c "env"  
...  
HOME=/home/someuser
...  

मैं जो करना चाहता हूं वह उपयोगकर्ताओं के होम डायरेक्टरी के तहत स्क्रिप्ट चलाना है। / घर / someuser / लिपियों।
$ {HOME} /scripts/somescript.sh के रूप में

$ sudo -u someuser  ${HOME}/scripts/somescript.sh
sudo: /root/scripts/somescript.sh: command not found  

मुझे क्या उम्मीद थी:

$ sudo -u someuser  ${HOME}/scripts/somescript.sh
...
script output.
...

जवाबों:


1

संबंधित संबंधित:

sudo -u someuser -i "echo $HOME"

मेरे लिए बिल्कुल भी काम नहीं करता है। इसे कहते हैं:

-bash: echo $HOME: command not found

इस बिंदु पर: जब आप कमांड निष्पादित करते हैं

sudo -u someuser -i echo $HOME

चर $HOMEको शेल द्वारा विस्तारित किया जाता है इससे पहले कि सूडो को भी निष्पादित किया जाता है।

इसे हल करने के लिए, आप एक कमांड का उपयोग कर सकते हैं

sudo -u someuser -i bash -c 'echo $HOME'

इस आदेश में, echo $HOMEUID स्विच करने के बाद शाब्दिक रूप से बैश हो जाता है।

परिणाम अपेक्षित है:

/home/someuser

बैश कमांड लाइन विस्तार, बनाने के लिए एक मूर्खतापूर्ण गलती की तरह तेजी।
9

3

जब तुम करोगे

 su - someuser -c "echo $HOME"

वर्तमान खोल $ HOME फैलता है पहले , तो परिणाम के माध्यम से आदेश के लिए (पारित हो जाता है suएक खोल नया उपयोगकर्ता के रूप में चल प्रक्रिया के लिए इस मामले में) और यहां से।

एकल उद्धरण के साथ चर की रक्षा करने का प्रयास करें

 su - someuser -c 'echo $HOME'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.