Erteilen Sie die Berechtigung zur Ausgabeumleitung mit sudo in Linux

Erteilen Sie die Berechtigung zur Ausgabeumleitung mit sudo in Linux

Ich versuche, den Wert „1“ in eine virtuelle Datei von einzufügen /proc, und erhalte die Meldung „Zugriff verweigert“, obwohl ich Folgendes verwende sudo:

name@comp-name:/etc/dhcp$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward 
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

Ich vermute, dass dieser echoBefehl mit Rootberechtigung ausgeführt wird, Redirection ( >) aber möglicherweise ohne? Kann ich beide mit Rootberechtigung ausführen?

Antwort1

In diesem Fall sudogilt echo, wie Sie sagten, nur für .

Stattdessen könnten Sie eine Shell mit erhöhten Rechten wie folgt ausführen:

sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Oder noch kürzer:

sudo -s 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Antwort2

Der empfohlene Weg hierfür ist die Weiterleitung an das Programmtee

echo 1 | tee /proc/sys/net/ipv4/ip_forward

Antwort3

Das Problem ist, dass die Umleitung von Ihrer Shell und nicht von durchgeführt wird sudo. Normalerweise wird das von Ihnen ausgeführte Programm exec()nach der Umleitung ed. Da Sie keine Berechtigung zum Schreiben in die Datei haben, schlägt die Umleitung fehl. Wie oben erwähnt, ist die empfohlene Vorgehensweise die Verwendung von tee, wie in

echo stuff | sudo tee /some/file/path

verwandte Informationen