`sudo echo“ bla” >> / etc / sysctl.conf` การอนุญาตถูกปฏิเสธ


16

คำเตือน: ฉันสวยสามเณรที่ดูแลระบบสิ่ง

ฉันพยายามตั้งค่าการส่งต่อพอร์ตในอินสแตนซ์ AWS EC2 สิ่งนี้จะต้องทำในบรรทัดคำสั่งเพราะฉันไม่ต้องการเข้าไปแก้ไขอะไรมันต้องเป็นไปโดยอัตโนมัติ (เป็นส่วนหนึ่งของกระบวนการสร้าง )

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

ปฏิเสธการอนุญาต

สิ่งที่แปลกคือฉันใช้ (ประสบความสำเร็จ) ในการใช้sudoกับทุกคำสั่งที่ต้องการsuสิทธิพิเศษ ถ้าฉันทำsudo suก่อนคำสั่ง (ลองใช้ด้วยมือในsshเซสชัน) มันก็ใช้ได้

เหตุผลเบื้องหลังนี้ โซลูชันที่เป็นไปได้ที่ไม่เกี่ยวข้องsudo suหรือแก้ไขด้วยตนเองหรือไม่


ปัญหาเดียวกันที่นี่: stackoverflow.com/questions/82256/ … - นอกจากนี้หากคุณต้องการที่จะเสี่ยงจริงๆ:sudo -i
MirroredFate

คำตอบ:


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"

15

คุณอาจพบว่าการใช้คำสั่งนี้ง่ายกว่า:

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

วิ่ง

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.