Bash / proc / sys / net / ipv4 / ip_forward: permiso denegado

11

Traté de correr

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

Dice acceso denegado de bash, luego hice:

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

y ahora dice Operación no permitida.

¿Cómo puedo obtener acceso?

Kevin Hernandez
fuente
44
Pruebe esto:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Doug Smythies
Eso funcionó, ¿puedes explicar qué hace tee?
Kevin Hernández
3
El problema con sudo echo 1 > /proc/sys/net/ipv4/ip_forwardes que la redirección de la salida no se realiza como sudo, por lo que no funciona. Desde la página de manual:, tee - read from standard input and write to standard output and filesy si se hace, ya sudoque tiene suficientes privilegios para escribir en el archivo.
Doug Smythies

Respuestas:

15

Los bits de permiso para el archivo /proc/sys/net/ipv4/ip_forwardson:

-rw-r--r-- 

con el owner:groupser root:root.

Entonces solo rootpuede escribir en el archivo.

Cuando tu lo hagas:

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

como usuario normal, no podrá escribir en el archivo debido a un permiso insuficiente.

Tu puedes hacer:

  • Uso sudoy bash:

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

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

Tenga en cuenta que debe usarlo /etc/sysctl.confpara operaciones persistentes en los /proc/syssubdirectorios.

En pocas palabras, para habilitar el reenvío de IP, puede poner lo siguiente en /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Entonces corre:

sudo sysctl -p

tener efecto inmediato

Esto tiene el mismo efecto que editar el archivo /proc/sys/net/ipv4/ip_forward directamente, y sin mencionar que es mucho más limpio y, por supuesto, persistente.

heemayl
fuente
Haciendo eco 1 | sudo tee / proc / sys / net / ipv4 / ip_forward funcionó para mí, ¿puede explicar qué es tee?
Kevin Hernández
1
@ChrisEthanFox teees un comando para enviar lo que reciba tanto a la salida estándar como a los archivos. Comprobarman tee
heemayl
¡He iniciado sesión como root pero todavía no puedo usar el comando rm ( rm /proc/sys/net/ipv4/icmp_echo_ignore_all) para eliminar dicho archivo! Incluso verifiqué el bit inmutable y no está configurado en ese archivo ... Me sale el mismo error "rm: no se puede eliminar '/ proc / sys / net / ipv4 / icmp_echo_ignore_all': Permiso denegado". ¡Pero mágicamente puedo editar el archivo como lo describiste! ¡No me doy cuenta de cuál es el problema rm!
Mojtaba Rezaeian
@MojtabaRezaeian Es el núcleo que impide la eliminación. /proces decir, procfsvive en la memoria y está expuesto por el núcleo. Entonces, está obteniendo una vista del núcleo, y lo que sea que le permita hacer a los archivos en tal FS depende totalmente del núcleo.
heemayl
@heemayl Entonces, ¿cómo puedo eliminar ese archivo porque crear ese archivo era una opción para deshabilitar permanentemente las solicitudes de ping icmp a mi servidor, pero después de crear ese archivo ahora cambié de opinión pero no hay forma de eliminar esa opción (aunque ahora no es una opción cuando no se puede cambiar!) ¿Tienes alguna idea de cómo hacerlo? o tal vez requiere abrir otra pregunta?
Mojtaba Rezaeian