25 de mayo de 2007

Ejecutando codigo del shell como root.

A veces es necesario ejecutar ciertos programas como root, por ejemplo apt-get, insmod, modprobe, etc. Esto se soluciona agregando adelante sudo, sudo lo que hace es ejecutar sus parámetros como root.
Esto falla si queremos hacer algo asi como 'echo 10 > /proc/sys/root_file'. (Este caso tambien se puede resolver usando el comando tee.)
El problema es que sudo no ejecuta el shell, y por ejemplo todas las cosas interesantes que hace el shell (expansion de wildcards, redirección, etc) no son llevadas a cabo. Para hacer esto lo que hay que hacer es sudo su -c 'shell', por ejemplo sudo su -c 'echo 10 > /proc/sys/root_file'.