permiso 'sudo echo “bla” >> / etc / sysctl.conf` denegado


16

Descargo de responsabilidad: soy bastante novato en sysadmin.

Estoy tratando de configurar el reenvío de puertos en una instancia de AWS EC2, esto debe hacerse en la línea de comandos porque no quiero entrar y editar nada, tiene que ser automático (es parte de un proceso de compilación )

sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

Permiso denegado

Lo extraño es que he estado usando (con éxito) sudocasi todos los comandos que requieren suprivilegios. Si lo hago sudo suantes del comando (probarlo a mano en una sshsesión), entonces funciona.

¿Razones detrás de esto? ¿Posibles soluciones que no involucren sudo suo ediciones manuales?


El mismo problema aquí: stackoverflow.com/questions/82256/… - Además, si quieres ser realmente arriesgado:sudo -i
MirroredFate

Respuestas:


46

No puede usar sudopara afectar la redirección de salida; >y >>(y, para completar, <) se efectúan con el privilegio del usuario que realiza la llamada, porque la redirección se realiza mediante el shell de la llamada, no el subproceso llamado.

Tampoco

cp /etc/sysctl.conf /tmp/
echo "net.ipv4.ip_forward = 1" >> /tmp/sysctl.conf
sudo cp /tmp/sysctl.conf /etc/

o

sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"

15

Puede que le resulte más sencillo usar este comando:

echo net.ipv4.ip_forward = 1 | sudo tee -a /etc/sysctl.conf

12

sudoejecuta solo su comando, no la redirección, como root. Tendrá que envolverlo todo en un comando donde todo se ejecuta como root:

sudo sh -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

3

El comando sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.confse interpreta como que usted (no raíz) escribe el resultado sudo echo "net.ipv4.ip_forward = 1"en /etc/sysctl.conf.

correr

sudo -s 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

o

sudo su -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

para correr echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.confcomo root.


1
sudo sed -i "$ a <text>" <file>
  • -i : edita el archivo en su lugar.
  • $ a: agrega texto a la última línea

Usar el sedcomando evita la molestia de las redirecciones y las tuberías.

En tu caso: sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.