Loading

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]

       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
       construction  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’environnement dont fakeroot a besoin).

OPTIONS

       -l bibliothque, --lib bibliothque
              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-sauvegarde 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
              configuration,   vous   devez   repréciser   -s   dans  ce  but.
              L’utilisation du même nom de fichier pour  -i  et  -s  dans  une
              seule commande fakeroot ne pose pas de problème.

       -u, --unknown-is-real
              Utilise   le  véritable  propriétaire  des  fichiers  auparavant
              inconnus  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).

ASPECTS DE SÉCURITÉ

       fakeroot  est  un  programme  normal,  sans  privilèges  spéciaux.   Il
       n’augmente  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
       contient 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
              environnement 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’utilisateur 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
              create(),  mais  cela soulève d’autres problèmes, comme démontré
              par le paquet libtricks.  Ce  paquet  simule  beaucoup  d’autres
              fonctions,  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
              nouvelle version dans laquelle la fonction stat() utilise  (dans
              certains  cas)   open()),  causera  d’inexplicables  erreurs  de
              segmentation (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
              configure doit être lancé par la cible  build  de  debian/rules,
              l’utilisation    de    « dpkg-buildpackage   -rfakeroot »   gère
              correctement 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>.

PAGE DE MANUEL

       En  majeure  partie  écrite  par J.H.M. Dassen <jdassen@debian.org>: La
       plupart des ajouts et des modifications par Joost et Clint.

VOIR AUSSI

       faked(1)                dpkg-buildpackage(1),                debuild(1)
       /usr/share/doc/fakeroot/DEBUG