Oświadczenie: Jestem całkiem nowicjuszem w sysadmin.
Próbuję skonfigurować przekierowanie portów w instancji AWS EC2, należy to zrobić w wierszu polecenia, ponieważ nie chcę wchodzić i edytować niczego, musi to być automatyczne (jest to część procesu kompilacji ).
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
Odmowa zezwolenia
Dziwne jest to, że (z powodzeniem) używam sudo
praktycznie każdego polecenia wymagającego su
uprawnień. Jeśli zrobię to sudo su
przed poleceniem (wypróbowanie go ręcznie w ssh
sesji), to zadziała.
Powody tego? Możliwe rozwiązania, które nie wymagają sudo su
edycji ręcznej?
ubuntu
ssh
amazon-ec2
sudo
bevacqua
źródło
źródło
sudo -i
Odpowiedzi:
Nie można użyć,
sudo
aby wpłynąć na przekierowanie wyjścia;>
oraz>>
(i dla kompletności<
) są dokonywane z uprawnieniem wywołującego użytkownika, ponieważ przekierowanie jest wykonywane przez powłokę wywołującą, a nie wywoływany podproces.Albo zrób
lub
źródło
Łatwiejsze może być użycie tego polecenia:
źródło
sudo
uruchamia tylko twoje polecenie, a nie przekierowanie, jako root. Musisz to wszystko zawrzeć w poleceniu, w którym cała rzecz działa jako root:źródło
Polecenie
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
jest interpretowane jako że was (innego niż administrator) wpisać wyniksudo echo "net.ipv4.ip_forward = 1"
do /etc/sysctl.conf.Biegać
lub
uruchomić
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
jako root.źródło
-i
: edytuj plik na miejscu.$ a
: dołącz tekst do ostatniego wierszaUżycie
sed
polecenia pozwala uniknąć kłopotów z przekierowaniami i potokami.W Twoim przypadku:
sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf
źródło