Hoy me tope con este articulo[1] y como me parecio tan util quise
compartirlo. En mi caso llevo años buscando una manera elegante de
resolver este problema, hasta ahora habia resuelto usando cosas como
"echo hellow | sudo tee /etc/hello.conf" o con "sudo su -c ..." e
inventos por el estilo, pero esta opcion me parece en extremo util.

Running Complex Commands with sudo

If you use sudo to run commands as root, you've probably run into
“permission denied” problems when only part of a pipeline or part of a
command is running with root permissions.

This fails with “permission denied” because the file is writable only by root:

$ echo 12000 > /proc/sys/vm/dirty_writeback_centisecs

But, this fails too:

$ sudo echo 12000 > /proc/sys/vm/dirty_writeback_centisecs

Why? The /bin/echo program is running as root, because of sudo, but
the shell that's redirecting echo's output to the root-only file is
still running as you. Your current shell does the redirection before
sudo starts.

The solution is to run the whole pipeline under sudo. There are a
couple ways to do it, but I prefer:

echo "echo 12000 > /proc/sys/vm/dirty_writeback_centisecs" | sudo sh

That way, I can type everything before the pipe character, and see
what I'm about to run as root, then press the up arrow and add the |
sudo sh to do it for real. This is not a big deal for short, obvious
pipelines, but when you're building up a more complicated command as
root, it's safer to look at it first before you run it.

[1]http://www.linuxjournal.com/content/running-complex-commands-sudo

-- 
Carlos Javier
_______________________________________________
Cancelar suscripción
https://listas.softwarelibre.cu/mailman/listinfo/linux-l
Buscar en el archivo
http://listas.softwarelibre.cu/buscar/linux-l

Responder a