`सूदो गूंज“ ब्ला ”>> / आदि / sysctl.conf` अनुमति से इनकार कर दिया


16

अस्वीकरण: मैं sysadmin सामान पर बहुत नौसिखिया हूँ।

मैं एक एडब्ल्यूएस ईसी 2 उदाहरण में पोर्ट अग्रेषण स्थापित करने की कोशिश कर रहा हूं, यह कमांड-लाइन में किया जाना है क्योंकि मैं कुछ भी संपादित नहीं करना चाहता हूं, यह स्वचालित होना है (यह एक बिल्ड प्रक्रिया का हिस्सा है। )।

sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

अनुमति नहीं मिली

अजीब बात यह है कि मैं (सफलतापूर्वक) विशेष रूप से विशेषाधिकारों की sudoआवश्यकता वाले हर आदेश का उपयोग कर रहा हूं su। अगर मैं sudo suकमांड से पहले करता हूं ( sshसत्र में इसे हाथ से निकालने की कोशिश करता है ), तो यह काम करता है।

इसके पीछे कारण? संभव समाधान जिसमें शामिल sudo suया मैन्युअल संपादन नहीं है?


यहाँ एक ही समस्या: stackoverflow.com/questions/82256/… - इसके अलावा, यदि आप वास्तव में जोखिम भरा होना चाहते हैं:sudo -i
दर्पण

जवाबों:


46

आप sudoआउटपुट पुनर्निर्देशन को प्रभावित करने के लिए उपयोग नहीं कर सकते हैं ; >और >>(और, पूर्णता के लिए <) कॉलिंग उपयोगकर्ता के विशेषाधिकार से प्रभावित होते हैं, क्योंकि पुनर्निर्देशन कॉलिंग शेल द्वारा किया जाता है, न कि उपप्रकार कहा जाता है।

या तो करते हैं

cp /etc/sysctl.conf /tmp/
echo "net.ipv4.ip_forward = 1" >> /tmp/sysctl.conf
sudo cp /tmp/sysctl.conf /etc/

या

sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"

16

आपको इस आदेश का उपयोग करना सरल लग सकता है:

echo net.ipv4.ip_forward = 1 | sudo tee -a /etc/sysctl.conf

12

sudoकेवल आपकी आज्ञा को चलाता है, न कि रीडायरेक्ट, रूट के रूप में। आपको इसे पूरी तरह से रूट के रूप में चलाने वाली कमांड में लपेटना होगा:

sudo sh -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

3

कमांड sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.confकी व्याख्या इस प्रकार की जाती है कि आप (नॉनरोट) sudo echo "net.ipv4.ip_forward = 1"/etc/sysctl.conf में परिणाम लिखते हैं ।

Daud

sudo -s 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

या

sudo su -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.confजड़ के रूप में चलाने के लिए ।


1
sudo sed -i "$ a <text>" <file>
  • -i : जगह में फ़ाइल संपादित करें।
  • $ a: अंतिम पंक्ति में पाठ जोड़ें

sedकमांड का उपयोग करने से आप पुनर्निर्देशन और पाइपलाइन की परेशानी से बच जाते हैं।

आपके मामले में: sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf

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