Fakeroot o root, esa es la cuestión

By | December 4, 2014

Poco se oye hablar de Fakeroot, porque tampoco se hace normalmente gran uso de esa utilidad y como concepto tampoco está muy claro. Fakeroot nos permite crear un entorno en el que “parece que tenemos permisos de root” pero no es así. De ahí el prefijo “fake”. ¿Y qué utilidad tiene esto? Pues especialmente a la hora de manipular ficheros (crear, modificar, borrar) en un entorno con “supuestos permisos de root”, y también en el caso de desarrolladores a la hora de construir paquetes .deb o .rpm que requieren de root. Básicamente, nos estamos ahorrando utilizar en exceso la cuenta original de root, lo que podría comprometer la seguridad del sistema. Para ejemplo un botón.

Entramos en modo fakeroot:

bob@debian3:~$ fakeroot

Podemos ver que en vez de mi usuario bob, aparezco ahora como root (pero no lo soy en realidad):

root@debian3:~# pwd
/home/bob

Creo un directorio:

 
root@debian3:~# mkdir test
 
root@debian3:~# ls -l
drwxr-xr-x 2 root root 4096 Jan 22 13:47 test

Ese directorio aparece como si fuera de root. Ahora voy a salir del modo fakeroot haciendo un “exit”:

 
root@debian3:~# exit
exit

Comprobamos de nuevo el directorio que he creado anteriormente:

bob@debian3:~$ ls -l
drwxr-xr-x 2 bob bob 4096 Jan 22 13:47 test 

¿Qué ocurre? Pues que efectivamente, en el entorno fakeroot yo “simulaba ser root sin serlo”. Ahora que no estamos en el entorno simulado, vemos que realmente ese directorio es de mi usuario originario, es decir, de bob.

Otra prueba que podemos hacer para asimilar el concepto: intentar modificar algo que sí sea realmente de root. El sistema nos dirá que nanay.

 
bob@debian3:~$ fakeroot
root@debian3:~# cd /usr/bin/
root@debian3:/usr/bin# touch test
touch: cannot touch 'test': Permission denied

Y es ahí donde vemos que “aunque la mona se vista de seda, mona se queda”, porque en realidad no somos root. Qué desilusión. Y también para darnos cuenta que root hay uno y sólo uno en un sistema UNIX o Linux, y este principio se cumple a rajatabla.