Dado que las respuestas son difíciles de entender (para mí mismo) y me tomó un poco de tiempo entenderlo ( este comentario me hizo entenderlo), voy a dar una explicación con suerte mejor.
1. Lo que sucede en fakeroot
Nada más que lo que sucede con tu propio usuario. Absolutamente nada más. Si usted fakeroot(que cuando se le llama le da un nuevo shell, como lo sudoharía), simule hacer cosas para las que necesitaba permiso y salga, no pasará absolutamente nada.
Si lo piensas, es una pérdida de tiempo total. ¿Por qué harías cosas que en realidad no sucederán? Es una locura. Simplemente podría no haber hecho nada de eso y no habría habido diferencia, ya que no hay rastro de ello.
Espera un minuto...
2. El rastro de fakeroot
No podía ser una huella dejada de fakeroot. Veamos los comandos en la respuesta de MortenSickel, que es bastante agradable y merece un voto positivo:
$ fakeroot
# echo "Wow I have root access" > root.tst
# ls -l root.tst
-rw-rw-r-- 1 root root 23 Oct 25 12:13 root.tst
# ls -l /root
ls: cannot open directory /root: Permission denied
# exit
$ ls -l root.tst
-rw-rw-r-- 1 ubuntu ubuntu 23 Oct 25 12:13 root.tst
A primera vista, parece que haberlo usado fakerootfue una pérdida total de tiempo. Al final, si no lo hubiera usado fakeroot, habría obtenido lo mismo.
Lo sutil aquí es esto:
$ cat root.tst
Wow I have root access
Lo que significa que el contenido del archivo todavía recuerda ser una raíz. Se podría decir que no usar fakeroothabría producido los mismos resultados. Tienes razón, este ejemplo es demasiado simple.
Tomemos otro ejemplo:
$ fakeroot
# touch x
# touch y
# chown myuser:myuser x
# ls -l > listing
# exit
$ ls -l
total 4
-rw-rw-r-- 1 myuser myuser 152 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 y
$ cat listing
total 0
-rw-rw-r-- 1 root root 0 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 root root 0 Jan 7 21:39 y
Vamos a ver que pasó. Fingí serlo root, lo cual es totalmente ineficaz, y creé xy y. Fingí xpertenecer myusery ypertenecer root. En realidad, ambos pertenecen myuser(como podemos ver al final), pero solo fingí que era así.
Luego creé una lista y guardé mi imaginación en un archivo. Más tarde, cuando miro hacia atrás en el archivo, puedo ver a quién imaginé que deberían pertenecer los archivos. Una vez más, en realidad no son propiedad de personas que imaginé, simplemente lo imaginé.
3. Entonces ... ¿Por qué quieres eso otra vez?
Puede decir que realmente no necesitaba fingir ser root para crear esa lista. Podría simplemente haber creado el listado, luego editarlo para reflejar mi imaginación. Tienes razón, no necesitabas fakerooteso. De hecho, sabiendo que en fakerootrealidad no hace nada, no puedes haber ganado ninguna habilidad que no tenías antes.
Pero , y esto es de lo que fakerootse trata, editar la lista podría no ser trivial. Como ocurre con un paquete que se puede instalar en su sistema, tiene un formato tared, gziped, xzed, bzip2ed o cualquier otro formato que mantenga sus archivos juntos y recuerde sus permisos y propietarios. ¿Puede modificar fácilmente el archivo comprimido y editar la propiedad de un archivo? No sé sobre ti, pero no puedo pensar en una manera.
¿Podría haber una herramienta construida que, una vez que todo esté comprimido, modifique el archivo comprimido y edite programáticamente las propiedades y los permisos? Sí, podría. Entonces, podría fingir las propiedades antes de comprimirlas o cambiarlas después. La gente de Debian decidió que lo primero es más fácil.
4. ¿Por qué no solo usar sudo?
En primer lugar, no necesita privilegios de root para compilar software y no necesita privilegios de root para comprimirlos. Entonces, si no lo necesita, realmente debería ser un usuario de Windows para pensar en obtener ese permiso. Pero aparte del sarcasmo, es posible que ni siquiera tenga una contraseña de root.
Además, digamos que tienes permisos de root. Y supongamos que desea simular que un archivo debe tener acceso de lectura solo a la raíz. Entonces sudo, en realidad, cambias el propietario del archivo y los permisos a root, sales del shell raíz e intentas empaquetar todo. Fallas porque ahora ya no puedes leer el archivo ya que no tienes acceso de root. Entonces debe sudocomprimir y compilar el paquete como root. Efectivamente, tienes que hacer todo como root.
Esto es malo TM .
Como empaquetador, no necesita permisos de root y no debería obtenerlo. Cuando instala un paquete, es posible que necesite instalar algún archivo ( A) como root y ahí es donde necesita los permisos de root. Todo lo que fakeroothace es hacer esto posible. Permite que el empaquetador enumere Acomo propiedad de root para el archivador, de modo que cuando el usuario descomprime el paquete, el archivador exige permiso de root y crea Acomo propiedad de root.
sudoosuporque es su máquina.fakeroottiene dos usos: 1) engaña a los programas haciéndole creer que es un usuario root, lo que puede requerir algún software propietario mal escrito, incluso si no es necesario (por lo general, el desarrollador de Windows se ha convertido en Linux) y 2) permite emular el modo de archivo y los cambios de propiedad que no haría De lo contrario, no podrá hacerlo, principalmente para crear untararchivo con los permisos y la propiedad correctos, útil, por ejemplo, al empaquetar software.