Provided by: fakeroot_1.7.1ubuntu1_i386 bug
 

NOM

        fakeroot  -  lance  une  commande  dans  un  environnement simulant les
        privilèges du superutilisateur pour la manipulation des fichiers.
 

SYNOPSIS

        fakeroot  [-l|--lib  bibliothèque]  [--faked  binairedesimulation]  [-i
        fichier-de-chargement] [-s fichier-de-sauvegarde] [-u|--unknown-is-real
        ] [-b|--fd-base ] [-h|--help ] [-v|--version ] [--] [commande]
 

DESCRIPTION

        fakeroot lance une commande dans un  environnement  dans  lequel  cette
        commande  obtient  les  droits  de  l’administrateur pour manipuler des
        fichiers. C’est pratique pour permettre aux utilisateurs de  créer  des
        archives  (tar,  ar,  .deb, etc.) qui contiennent des fichiers avec les
        privilèges et appartenances  du  superutilisateur.  Sans  fakeroot,  il
        faudrait posséder les droits du superutilisateur pour donner les droits
        et appartenances convenables aux fichiers constituant  l’archive,  puis
        de   les  assembler ;  ou  bien,  il  faudrait  construire  directement
        l’archive, sans utiliser le programme d’archivage.
 
        fakeroot fonctionne en remplaçant les fonctions de la  bibliothèque  de
        manipulation  des  fichiers  (chmod(2), stat(2), etc.) par d’autres qui
        simulent les résultats que  la  vraie  bibliothèque  aurait  donnés  si
        l’utilisateur  avait  réellement  été  superutilisateur.  Ces fonctions
        simulées sont dans la  bibliothèque  partagée  /usr/lib/libfakeroot.so*
        qui  est  chargée  par  le  mécanisme  LD_PRELOAD du chargeur dynamique
        (dynamic loader). (Voir ld.so(8))
 
        Si vous désirez construire des paquets avec fakeroot, veuillez  essayer
        de  construire  d’abord  le  paquet  fakeroot :  l’étape « debian/rules
        build » réalise quelques tests  (principalement  pour  les  bogues  des
        vieilles versions de fakeroot). Si ces tests échouent (si vous avez par
        exemple certains programmes en libc5 sur votre système),  la  construc‐
        tion  d’autres  paquets avec fakeroot échouera certainement aussi, mais
        de façon parfois plus subtile.
 
        De même,  notez  qu’il  vaut  mieux  ne  pas  construire  les  binaires
        eux-mêmes   sous  fakeroot.  En  particulier,  configure  et  ses  amis
        n’apprécient pas quand le système se comporte différemment de ce qu’ils
        attendent  (parfois,  ils modifient aléatoirement des variables d’envi‐
        ronnement dont fakeroot a besoin).
 

OPTIONS

        -l bibliothèque, --lib bibliothèque
               Spécifie  une  autre  bibliothèque  de   substitution   (wrapper
               library).
 
        --faked binaire
               Spécifie l’utilisation d’une autre bibliothèque que faked.
 
        [--] commande
               La  commande  à  lancer  sous  fakeroot. Utilisez « -- »  si des
               options de la commande risque d’être confondues avec  celles  de
               fakeroot.
 
        -s fichier-de-sauvegarde
               Enregistre  l’environnement  de fakeroot dans fichier-de-sauveg‐
               arde en quittant. Ce fichier pourra servir plus tard à restaurer
               cette configuration grâce à l’option -i. Toutefois, cette option
               échouera et fakeroot se  comportera  bizarrement  sauf  si  vous
               laissez  les  fichiers manipulés par fakeroot intacts quand vous
               êtes en dehors de cet environnement. Malgré  cette  restriction,
               cela  peut  être  utile.  Par  exemple,  cela  peut  servir avec
               rsync(1) pour sauvegarder et restaurer toute une arborescence de
               répertoires  avec  les  informations  de propriétaire, groupe et
               périphérique  sans   avoir   à   être   superutilisateur.   Voir
               /usr/share/doc/fakeroot/README.saving  pour plus d’informations.
 
        -i fichier-de-chargement
               Recharge à  partir  de  fichier-de-chargement  un  environnement
               fakeroot  préalablement  sauvegardé  en  utilisant  l’option -s.
               Notez que cela ne sauvegardera pas automatiquement la configura‐
               tion,  vous  devez  repréciser  -s dans ce but. L’utilisation du
               même nom de fichier pour -i et -s dans une seule commande  fake     
               root ne pose pas de problème.
 
        -u, --unknown-is-real
               Utilise le véritable propriétaire des fichiers auparavant incon‐
               nus de fakeroot, plutôt que de considérer qu’ils appartiennent à
               root:root.
 
        -b fd  Définit la valeur de base du descripteur de fichier (en mode TCP
               uniquement). Fd sera la plus petite  valeur  du  descripteur  de
               fichier  utilisé  pour  les connexions TCP. Ce réglage peut être
               très pratique pour gérer les descripteurs de  fichiers  utilisés
               par les programmes qui fonctionnent sous fakeroot.
 
        -h     Affiche l’aide.
 
        -v     Affiche la version.
 

EXEMPLES

        Voici un exemple d’utilisation de fakeroot. Notez bien qu’à l’intérieur
        de  l’environnement  fakeroot,  les  manipulations  de   fichiers   qui
        requièrent les privilèges du superutilisateur ont lieu, mais uniquement
        virtuellement.
 
        $  whoami
        joost
        $ fakeroot /bin/bash
        #  whoami
        root
        # mknod hda3 b 3 1
        # ls -ld hda3
        brw-r--r--   1 root     root       3,   1 Jul  2 22:58 hda3
        # chown joost:root hda3
        # ls -ld hda3
        brw-r--r--   1 joost    root       3,   1 Jul  2 22:58 hda3
        # ls -ld /
        drwxr-xr-x  20 root     root         1024 Jun 17 21:50 /
        # chown joost:users /
        # chmod a+w /
        # ls -ld /
        drwxrwxrwx  20 joost    users        1024 Jun 17 21:50 /
        # exit
        $ ls -ld /
        drwxr-xr-x  20 root     root         1024 Jun 17 21:50 //
        $ ls -ld hda3
        -rw-r--r--   1 joost    users           0 Jul  2 22:58 hda3
 
        Seule l’opération que l’utilisateur joost pouvait réaliser a réellement
        aboutie.
 
        fakeroot  a été écrit spécifiquement pour permettre aux utilisateurs de
        créer des paquets pour Debian GNU/Linux (au format deb(5)) sans avoir à
        leur donner les privilèges du superutilisateur. Ceci peut être fait par
        des  commandes  telles  que  dpkg-buildpackage  -rfakeroot  ou  debuild
        -rfakeroot (-rfakeroot est actuellement utilisé par défaut par debuild,
        donc vous n’avez pas besoin de cet argument).
        fakeroot est un programme normal, sans privilèges spéciaux.  Il  n’aug‐
        mente  pas  les privilèges de l’utilisateur et n’altère pas la sécurité
        du système.
 

FICHIERS

        /usr/lib/libfakeroot/libfakeroot.so* La bibliothèque partagée qui  con‐
        tient les fonctions simulées.
 

ENVIRONNEMENT

        FAKEROOTKEY
               La  clé  utilisée  pour communiquer avec le démon fakeroot. Tout
               programme qui démarre avec le bon LD_PRELOAD et une  FAKEROOTKEY
               d’un  serveur actif se connectera automatiquement à ce démon, et
               aura la même « fausse » vision des droits du système de fichiers
               (si  le serveur et le programme connecté ont bien été lancés par
               le même utilisateur).
 
        LD_LIBRARY_PATH
 
        LD_PRELOAD
               Fakeroot a été conçu en encapsulant les appels  systèmes.  On  y
               arrive   en   définissant  LD_LIBRARY_PATH=/usr/lib/fakeroot  et
               LD_PRELOAD=libfakeroot.so.0.  Cette  bibliothèque  est   chargée
               avant  la  bibliothèque  C du système, d’où l’interception de la
               plupart des fonctions de la bibliothèque. Si vous devez  définir
               d’autres  LD_LIBRARY_PATH  ou  LD_PRELOAD  au sein d’un environ‐
               nement fakeroot, cela devrait être fait en respectant l’ordre de
               placement,         par         exemple         comme        dans
               LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/toto/titi/.
 

LIMITES

        Versions des biblioth   ques
               Toute commande exécutée sous fakeroot devra être liée à la  même
               version de la bibliothèque C que fakeroot lui-même.
 
        open()/create()
               fakeroot  n’encapsule pas open(), create(), etc. Donc si l’util‐
               isateur joost tape soit
 
               touch foo
               fakeroot
               ls -al foo
 
               soit
 
               fakeroot
               touch foo
               ls -al foo
 
               fakeroot n’aura aucun moyen de savoir que dans le  premier  cas,
               le  propriétaire  de foo est réellement joost tandis que dans le
               second cas, il aurait dû être root. Pour un  paquet  Debian,  il
               est  toujours correct de donner à tous les fichiers « inconnus »
               l’uid=gid=0. La vraie solution est de  simuler  open()  et  cre     
               ate(),  mais cela soulève d’autres problèmes, comme démontré par
               le paquet libtricks. Ce paquet simule  beaucoup  d’autres  fonc‐
               tions,  et  tente  d’aller  plus  loin  que  fakeroot  . On peut
               s’apercevoir qu’une mise à jour minime de la libc (d’une version
               dans laquelle la fonction stat() n’utilise pas open() à une nou‐
               velle version dans laquelle la  fonction  stat()  utilise  (dans
               certains  cas)  open()), causera d’inexplicables erreurs de seg‐
               mentation (ainsi, le stat() de la libc6  appellera  la  fonction
               simulée  open(),  qui à son tour appellera la fonction stat() de
               la libc6, etc.). La correction n’a pas été facile, mais une fois
               corrigé,  ce  n’était plus qu’une question de temps avant qu’une
               autre fonction ne se mette à utiliser open(). Quant  au  portage
               sur un autre système d’exploitation, il n’a pas été envisagé. Il
               a donc été décidé de limiter au maximum le nombre  de  fonctions
               simulées  par  fakeroot,  afin  de  limiter l’éventualité de ces
               « collisions ».
 
        GNU configure (et autres programmes du m   me genre)
               En pratique, fakeroot modifie le comportement  du  système.  Les
               programmes  qui  testent  le  système (tel que configure du GNU)
               peuvent être troublés par cela (ou, s’ils ne le  sont  pas,  ils
               risquent  de  solliciter  fakeroot  à  un point tel que celui-ci
               risque lui-même de s’y perdre). Il est donc préférable de ne pas
               lancer  « configure » dans un environnement fakeroot. Comme con‐
               figure doit être lancé  par  la  cible  build  de  debian/rules,
               l’utilisation de « dpkg-buildpackage -rfakeroot » gère correcte‐
               ment ce problème.
 

BOGUES

        open() n’est pas simulé. Ce n’est pas si grave que  cela,  mais  si  un
        programme  invoque  open("file",  O_WRONLY, 000), écrit dans ce fichier
        « file », le ferme, puis réessaye ensuite de l’ouvrir en lecture, alors
        cette  tentative  échouera,  car  les  droits du fichier seront 000. Le
        bogue, c’est que si root fait cette opération, alors open() fonctionne,
        puisque les droits des fichiers ne sont pas du tout vérifiés pour root.
        Il a été choisi de ne pas simuler open(), car open()  est  utilisé  par
        nombre  d’autres  fonctions  de  la  libc (dont certaines qui sont déjà
        simulées par fakeroot), ce qui créerait des  boucles  (ou  pourrait  en
        créer quand l’implémentation des diverses fonctions de la libc change).
 

COPIES

        fakeroot est distribué sous la  licence  GNU  General  Public  License.
        (GPL 2.0 ou supérieure).
 

AUTEURS

        Joost Witteveen
               <joostje@debian.org>
 
        Clint Adams
               <schizo@debian.org>
 
        Timo Savola
 

TRADUCTION

        Sylvain Cherrier <sylvain.cherrier@free.fr>.
        En  majeure  partie  écrite  par J.H.M. Dassen <jdassen@debian.org>: La
        plupart des ajouts et des modifications par Joost et Clint.
        faked(1)    dpkg-buildpackage(1),    debuild(1)    /usr/share/doc/fake     
        root/DEBUG