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 sudo
harí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 fakeroot
fue 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 fakeroot
habrí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é x
y y
. Fingí x
pertenecer myuser
y y
pertenecer 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 fakeroot
eso. De hecho, sabiendo que en fakeroot
realidad no hace nada, no puedes haber ganado ninguna habilidad que no tenías antes.
Pero , y esto es de lo que fakeroot
se trata, editar la lista podría no ser trivial. Como ocurre con un paquete que se puede instalar en su sistema, tiene un formato tar
ed, gzip
ed, xz
ed, bzip2
ed 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 sudo
comprimir 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 fakeroot
hace es hacer esto posible. Permite que el empaquetador enumere A
como propiedad de root para el archivador, de modo que cuando el usuario descomprime el paquete, el archivador exige permiso de root y crea A
como propiedad de root.
sudo
osu
porque es su máquina.fakeroot
tiene 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 untar
archivo con los permisos y la propiedad correctos, útil, por ejemplo, al empaquetar software.