Penafian: Saya cukup pemula dalam hal sysadmin.
Saya mencoba mengatur port forwarding dalam contoh AWS EC2, ini harus dilakukan di command-line karena saya tidak ingin masuk dan mengedit apa pun, itu harus otomatis (itu bagian dari proses build ).
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
Izin ditolak
Yang aneh adalah saya telah (berhasil) menggunakan sudo
hampir setiap perintah yang membutuhkan su
hak istimewa. Jika saya lakukan sudo su
sebelum perintah (mencobanya dengan tangan dalam suatu ssh
sesi), maka itu berhasil.
Alasan di balik ini? Kemungkinan solusi yang tidak melibatkan sudo su
atau pengeditan manual?
ubuntu
ssh
amazon-ec2
sudo
bevacqua
sumber
sumber
sudo -i
Jawaban:
Anda tidak dapat menggunakan
sudo
untuk memengaruhi pengalihan output;>
dan>>
(dan, untuk kelengkapan,<
) dilakukan dengan hak istimewa dari pengguna panggilan, karena pengalihan dilakukan oleh shell panggilan, bukan subproses yang disebut.Baik lakukan
atau
sumber
Anda mungkin lebih mudah menggunakan perintah ini:
sumber
sudo
hanya menjalankan perintah Anda, bukan redirect, sebagai root. Anda harus membungkus semuanya dalam perintah di mana semuanya berjalan sebagai root:sumber
Perintah
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
diartikan sebagai Anda (nonroot) menulis hasilsudo echo "net.ipv4.ip_forward = 1"
ke /etc/sysctl.conf.Lari
atau
untuk dijalankan
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sebagai root.sumber
-i
: edit file di tempat.$ a
: tambahkan teks ke baris terakhirMenggunakan
sed
perintah akan menghindari kerumitan pengalihan dan jalur pipa.Dalam kasus Anda:
sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf
sumber