Bash / proc / sys / net / ipv4 / ip_forward: Berechtigung verweigert

10

Ich habe versucht zu rennen

echo 1 > /proc/sys/net/ipv4/ip_forward

Es heißt, Zugriff von Bash verweigert, ich habe dann getan:

sudo chmod 1+x /proc/sys/net/ipv4/ip_forward

und jetzt heißt es Operation nicht erlaubt.

Wie kann ich Zugang bekommen?

Kevin Hernandez
quelle
4
Versuchen Sie dies:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Doug Smythies
Das hat funktioniert, kannst du erklären, was Tee macht?
Kevin Hernandez
2
Das Problem dabei sudo echo 1 > /proc/sys/net/ipv4/ip_forwardist, dass die Umleitung der Ausgabe nicht als erfolgt sudo, so dass es nicht funktioniert. Von der Manpage : tee - read from standard input and write to standard output and files, und wenn dies getan wird sudo, hat es ausreichende Berechtigungen, um in die Datei zu schreiben.
Doug Smythies

Antworten:

14

Die Berechtigungsbits für die Datei /proc/sys/net/ipv4/ip_forwardlauten:

-rw-r--r-- 

mit dem owner:groupSein root:root.

rootKann also nur in die Datei schreiben.

Wenn Sie das tun:

echo 1 > /proc/sys/net/ipv4/ip_forward

Als normaler Benutzer können Sie aufgrund unzureichender Berechtigungen nicht in die Datei schreiben.

Du kannst tun:

  • Verwenden Sie sudound bash:

    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
  • Verwendung tee:

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

Beachten Sie, dass Sie /etc/sysctl.conffür dauerhafte Vorgänge in den /proc/sysUnterverzeichnissen verwenden sollten.

Kurz gesagt, um die IP-Weiterleitung zu aktivieren, können Sie einfach Folgendes eingeben /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Dann renne:

sudo sysctl -p

sofortige Wirkung haben.

Dies hat den gleichen Effekt wie das /proc/sys/net/ipv4/ip_forward direkte Bearbeiten der Datei und ist weitaus sauberer und natürlich beständig.

heemayl
quelle
Echo machen 1 | sudo tee / proc / sys / net / ipv4 / ip_forward hat für mich gearbeitet. Können Sie erklären, was Tee ist?
Kevin Hernandez
1
@ChrisEthanFox teeist ein Befehl zum Senden aller empfangenen Daten sowohl an die Standardausgabe als auch an Dateien. Checkman tee
heemayl
Ich bin als root angemeldet, kann aber immer noch nicht den Befehl rm ( rm /proc/sys/net/ipv4/icmp_echo_ignore_all) verwenden, um eine solche Datei zu entfernen! Ich habe sogar das unveränderliche Bit überprüft und es ist nicht in dieser Datei gesetzt ... Ich erhalte den gleichen Fehler "rm: '/ proc / sys / net / ipv4 / icmp_echo_ignore_all' kann nicht entfernt werden: Berechtigung verweigert". Aber magisch kann ich Datei bearbeiten, wie Sie beschrieben haben! Ich kann nicht erkennen, womit das Problem ist rm!
Mojtaba Rezaeian
@ MojtabaRezaeian Es ist der Kernel, der das Entfernen verhindert. /procdh procfslebt von der Erinnerung und wird vom Kernel freigelegt. Sie erhalten also einen Überblick über den Kernel, und was auch immer Sie mit den Dateien auf einem solchen FS tun können, liegt ganz beim Kernel.
Heemayl
@heemayl Wie kann ich diese Datei entfernen, da das Erstellen dieser Datei eine Option war, um ICMP-Ping-Anforderungen an meinen Server dauerhaft zu deaktivieren? Nachdem ich diese Datei jetzt erstellt habe, habe ich meine Meinung geändert, aber es gibt keine Möglichkeit, diese Option zu entfernen (obwohl dies jetzt keine Option ist wenn es nicht geändert werden kann!) Hast du eine Idee, wie das geht? oder muss vielleicht eine andere Frage gestellt werden?
Mojtaba Rezaeian