Comme les réponses sont difficiles à comprendre (pour moi-même) et qu'il a fallu un peu de réflexion pour le comprendre ( ce commentaire m'a permis de le comprendre), je vais donner une meilleure explication si tout va bien.
1. Qu'est-ce qui se passe dans fakeroot
Rien de plus que ce qui se passe avec votre propre utilisateur. Absolument rien de plus. Si vous fakeroot
(qui, à l'appel, vous donne un nouveau shell, par exemple sudo
), faites semblant de faire des choses pour lesquelles vous aviez besoin d'une permission, et quittez, rien ne se passera.
Si vous y réfléchissez, c'est une perte de temps totale. Pourquoi voudriez-vous faire des choses qui ne se produiront pas? C'est fou. Vous auriez simplement pu ne rien faire et il n'y aurait eu aucune différence, puisqu'il n'y a aucune trace.
Attends une minute...
2. La trace de fakeroot
Il pourrait y avoir une trace de fakeroot
. Regardons les commandes de la réponse de MortenSickel qui est très jolie et mérite un vote positif:
$ 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
Au premier coup d'œil, il semble que le fait de l'utiliser fakeroot
soit une perte de temps totale. En fin de compte, si vous n'aviez pas utilisé fakeroot
, vous auriez la même chose.
La chose subtile ici est la suivante:
$ cat root.tst
Wow I have root access
Ce qui signifie que le contenu du fichier se souvient toujours d’être une racine. Vous pourriez dire que ne pas utiliser fakeroot
aurait produit les mêmes résultats. Vous avez raison, cet exemple est trop simple.
Prenons un autre exemple:
$ 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
Voyons ce qui se passe. Je prétendais être root
, ce qui est totalement inefficace, et créé x
et y
. J'ai prétendu x
appartenir myuser
et y
appartenir à root
. En fait, ils appartiennent tous les deux myuser
(comme nous pouvons le voir à la fin), mais je prétendais que c'était comme ça.
Ensuite, j'ai créé une liste et enregistré mon imagination dans un fichier. Plus tard, lorsque je regarde le fichier, je peux voir à qui je pense que les fichiers devraient appartenir. Encore une fois, ils n'appartiennent pas à des personnes que j'imaginais, je les imaginais simplement.
3. Alors ... pourquoi tu veux ça encore?
Vous pouvez dire que je n'avais pas vraiment besoin de faire semblant d'être root pour créer cette liste. J'aurais pu simplement créer la liste, puis la modifier pour refléter mon imagination. Tu as raison, tu n'avais pas besoin fakeroot
de ça. En fait, sachant que fakeroot
cela ne fait rien, vous ne pouvez avoir acquis aucune capacité que vous n'aviez pas auparavant.
Mais , et c’est tout ce dont il fakeroot
s’agit, la modification de la liste pourrait ne pas être triviale. Comme dans le cas d'un package pouvant être installé sur votre système, vous disposez d'un format tar
ed, gzip
ed, xz
ed, bzip2
ed ou de tout autre format permettant de conserver vos fichiers ensemble et de vous rappeler leurs autorisations et leurs propriétaires. Pouvez-vous facilement modifier le fichier compressé et modifier la propriété d'un fichier? Je ne sais pas pour vous, mais je ne peux pas penser à un moyen.
Pourrait-il y avoir un outil construit qui, une fois que tout est compressé, modifie le fichier compressé et édite par programme les droits de propriété et les autorisations? Oui il pourrait. Vous pouvez donc simuler les propriétés avant la compression ou les modifier après. Les gens de Debian ont décidé que le premier était plus facile.
4. Pourquoi ne pas simplement utiliser sudo
?
Tout d'abord, vous n'avez pas besoin des privilèges root pour créer des logiciels ni des privilèges root pour les compresser. Donc, si vous n'en avez pas besoin, vous devez vraiment être un utilisateur Windows pour même penser à obtenir cette permission. Mais à part le sarcasme, vous n’avez peut-être même pas le mot de passe root.
De plus, supposons que vous ayez les permissions root. Et disons que vous voulez prétendre qu'un fichier doit avoir un accès en lecture uniquement à la racine. Donc, vous sudo
changez le propriétaire du fichier et les autorisations en root
, vous sortez du shell root et essayez de tout empaqueter. Vous échouez car vous ne pouvez plus lire le fichier car vous n’avez pas accès à la racine. Donc, vous devez sudo
compresser et construire le paquet en tant que root. Effectivement, vous devez tout faire en tant que root.
C'est mauvais TM .
En tant qu'emballeur, vous n'avez pas besoin d'autorisations root et vous ne devriez pas l'obtenir. Lorsque vous installez un paquet, vous devrez peut-être installer un fichier ( A
) en tant que root. C'est là que vous avez besoin d'autorisations root. Tout fakeroot
est fait pour rendre cela possible. Il laisse la liste des emballeurs A
comme appartenant à root pour l’archiveur. Ainsi, lorsque le package est décompressé par l’utilisateur, l’archiveur demande l’autorisation root et crée A
comme appartenant à root.
sudo
ousu
parce que c'est votre machine.fakeroot
a deux usages 1) il trompe les programmes en leur faisant croire que vous êtes bien un utilisateur root, ce que certains logiciels propriétaires mal écrits peuvent nécessiter même s’ils ne sont pas nécessaires (généralement les développeurs Windows sont passés sous Linux) et 2) il permet d’émuler les changements de mode et de propriété que vous ne voudriez pas. t autrement pouvoir le faire, principalement pour créer untar
fichier avec les permissions et la propriété appropriées, utile par exemple lors du packaging d’un logiciel.