
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 echo
Befehl mit Rootberechtigung ausgeführt wird, Redirection ( >
) aber möglicherweise ohne? Kann ich beide mit Rootberechtigung ausführen?
Antwort1
In diesem Fall sudo
gilt 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