Haftungsausschluss: Ich bin ein hübscher Anfänger im Sysadmin-Bereich.
Ich versuche, die Portweiterleitung in einer AWS EC2-Instanz einzurichten. Dies muss in der Befehlszeile erfolgen, da ich nichts bearbeiten möchte. Es muss automatisch erfolgen (dies ist Teil eines Build-Prozesses) ).
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
Zugang verweigert
Das Seltsame ist, dass ich (erfolgreich) sudo
so ziemlich jeden Befehl verwendet habe, für den su
Berechtigungen erforderlich waren . Wenn ich es sudo su
vor dem Befehl mache (es von Hand in einer ssh
Sitzung ausprobieren ), dann funktioniert es.
Gründe dafür? Mögliche Lösungen, die keine sudo su
oder manuelle Bearbeitung beinhalten?
ubuntu
ssh
amazon-ec2
sudo
Bevacqua
quelle
quelle
sudo -i
Antworten:
Sie können
sudo
die Ausgabeumleitung nicht beeinflussen.>
und>>
(und der Vollständigkeit<
halber) werden mit dem Privileg des aufrufenden Benutzers ausgeführt, da die Umleitung durch die aufrufende Shell und nicht durch den aufgerufenen Unterprozess erfolgt.Entweder tun
oder
quelle
Möglicherweise ist es einfacher, diesen Befehl zu verwenden:
quelle
sudo
führt nur Ihren Befehl, nicht die Umleitung, als root aus. Sie müssen alles in einen Befehl einschließen, bei dem das Ganze als root ausgeführt wird:quelle
Der Befehl
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
wird so interpretiert, dass Sie (nicht-root) das Ergebnis vonsudo echo "net.ipv4.ip_forward = 1"
in /etc/sysctl.conf schreiben .Lauf
oder
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
als root laufen .quelle
-i
: Datei an Ort und Stelle bearbeiten.$ a
: Text an die letzte Zeile anhängenDurch
sed
die Verwendung des Befehls wird der Aufwand für Umleitungen und Pipelines vermieden.In deinem Fall:
sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf
quelle