LINUX

Permiso de sudo denegado con redireccionamiento o canalización [Solutions]

sudo con redireccionamiento o canalizaciones

En este tutorial, le mostraré cómo usar el comando sudo cuando lo use con redirect o pipe. Cuando use sudo con redirección (>) o pipe (|), obtendrá Permiso denegado mensaje de error en la salida de bash. Más adelante, le mostraré diferentes formas de solucionar este problema.

Usa sudo con tee

Por ejemplo, para redirigir la salida del comando ‘echo 1’ al archivo ‘ip_forward’, ejecute:

$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

El comando sudo anterior resultó en Permiso denegado porque la redirección la realiza el cascarón que no tiene permiso de escritura.

Podemos usar el comando sudo con el comando tee para resolver este error:

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

Usando el enfoque anterior, el comando ejecutado antes de la tubería no se ejecutará como root (echo 1). Eso es útil si solo necesita la salida de un programa, que no requiere privilegios de root.

En caso de que el comando antes de la tubería requiera root, podríamos usar sudo antes de cada comando, como:

$ sudo echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null

El enfoque similar que podemos usar para escribir «1» en el archivo «ip_forward», como en los ejemplos anteriores, sería elevar el proceso para escribir en el archivo.

Un ejemplo sería el siguiente:

$ sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null << EOF
1
EOF

Ejecutar shell con sudo -c

Otro enfoque popular sería ejecutar otro shell como root usando el -c opción.

Ejemplo:

$ sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Ejecutar shell usando sudo -s

Otra forma sería lanzar un shell con sudo -s y luego ejecute el comando:

$ sudo -s
# echo 1 > /proc/sys/net/ipv4/ip_forward
# ^D
$

Mediante el uso de un script de Bash

Hay otra forma de ejecutar sudo con redirección o canalización, y es creando un script bash con todos sus comandos y ejecutando ese script con sudo.

Veamos cómo podemos lograrlo. Primero, necesitamos crear un nuevo archivo usando cualquier editor de texto, como nano, vim, gedit o cualquier otro. Vamos a llamarlo «myscript.sh».

Luego pegue los siguientes comandos en myscript.sh y guarde el archivo:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward

Ahora solo necesita ejecutar el archivo myscript.sh con el comando sudo:

$ sudo myscript.sh

Conclusión

Hemos visto varias formas de usar sudo con redirección o canalización y evitar errores de permiso denegado. Si conoce otra forma de lograr esto o tiene alguna pregunta, publíquela en la sección de comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar