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) sudo
casi todos los comandos que requieren su
privilegios. Si lo hago sudo su
antes del comando (probarlo a mano en una ssh
sesión), entonces funciona.
¿Razones detrás de esto? ¿Posibles soluciones que no involucren sudo su
o ediciones manuales?
ubuntu
ssh
amazon-ec2
sudo
bevacqua
fuente
fuente
sudo -i
Respuestas:
No puede usar
sudo
para 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
o
fuente
Puede que le resulte más sencillo usar este comando:
fuente
sudo
ejecuta solo su comando, no la redirección, como root. Tendrá que envolverlo todo en un comando donde todo se ejecuta como root:fuente
El comando
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
se interpreta como que usted (no raíz) escribe el resultadosudo echo "net.ipv4.ip_forward = 1"
en /etc/sysctl.conf.correr
o
para correr
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
como root.fuente
-i
: edita el archivo en su lugar.$ a
: agrega texto a la última líneaUsar el
sed
comando 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
fuente