Provided by: fakeroot_1.20-3ubuntu2_amd64 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 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 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-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
              <clint@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