Provided by:
fakeroot_1.17-1_i386 
NOM
fakeroot - lance une commande dans un environnement simulant les
privileges du superutilisateur pour la manipulation des fichiers.
SYNOPSIS
fakeroot [-l|--lib biblioth`eque] [--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 creer des
archives (tar, ar, .deb, etc.) qui contiennent des fichiers avec les
privileges et appartenances du superutilisateur. Sans fakeroot, il
faudrait posseder 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 remplacant les fonctions de la bibliotheque de
manipulation des fichiers (chmod(2), stat(2), etc.) par d'autres qui
simulent les resultats que la vraie bibliotheque aurait donnes si
l'utilisateur avait reellement ete superutilisateur. Ces fonctions
simulees sont dans la bibliotheque partagee /usr/lib/libfakeroot.so*
qui est chargee par le mecanisme LD_PRELOAD du chargeur dynamique
(dynamic loader). (Voir ld.so(8))
Si vous desirez construire des paquets avec fakeroot, veuillez essayer
de construire d'abord le paquet fakeroot : l'etape << debian/rules
build >> realise quelques tests (principalement pour les bogues des
vieilles versions de fakeroot). Si ces tests echouent (si vous avez par
exemple certains programmes en libc5 sur votre systeme), la
construction d'autres paquets avec fakeroot echouera certainement
aussi, mais de facon parfois plus subtile.
De meme, notez qu'il vaut mieux ne pas construire les binaires
eux-memes sous fakeroot. En particulier, configure et ses amis
n'apprecient pas quand le systeme se comporte differemment de ce qu'ils
attendent (parfois, ils modifient aleatoirement des variables
d'environnement dont fakeroot a besoin).
OPTIONS
-l biblioth`eque, --lib biblioth`eque
Specifie une autre bibliotheque de substitution (wrapper
library).
--faked binaire
Specifie l'utilisation d'une autre bibliotheque que faked.
[--] commande
La commande a lancer sous fakeroot. Utilisez << -- >> si des
options de la commande risque d'etre 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 a restaurer cette configuration grace a l'option -i.
Toutefois, cette option echouera et fakeroot se comportera
bizarrement sauf si vous laissez les fichiers manipules par
fakeroot intacts quand vous etes en dehors de cet environnement.
Malgre cette restriction, cela peut etre utile. Par exemple,
cela peut servir avec rsync(1) pour sauvegarder et restaurer
toute une arborescence de repertoires avec les informations de
proprietaire, groupe et peripherique sans avoir a etre
superutilisateur. Voir /usr/share/doc/fakeroot/README.saving
pour plus d'informations.
-i fichier-de-chargement
Recharge a partir de fichier-de-chargement un environnement
fakeroot prealablement sauvegarde en utilisant l'option -s.
Notez que cela ne sauvegardera pas automatiquement la
configuration, vous devez repreciser -s dans ce but.
L'utilisation du meme nom de fichier pour -i et -s dans une
seule commande fakeroot ne pose pas de probleme.
-u, --unknown-is-real
Utilise le veritable proprietaire des fichiers auparavant
inconnus de fakeroot, plutot que de considerer qu'ils
appartiennent a root:root.
-b fd Definit la valeur de base du descripteur de fichier (en mode TCP
uniquement). Fd sera la plus petite valeur du descripteur de
fichier utilise pour les connexions TCP. Ce reglage peut etre
tres pratique pour gerer les descripteurs de fichiers utilises
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'a l'interieur
de l'environnement fakeroot, les manipulations de fichiers qui
requierent les privileges 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'operation que l'utilisateur joost pouvait realiser a reellement
aboutie.
fakeroot a ete ecrit specifiquement pour permettre aux utilisateurs de
creer des paquets pour Debian GNU/Linux (au format deb(5)) sans avoir a
leur donner les privileges du superutilisateur. Ceci peut etre fait par
des commandes telles que dpkg-buildpackage -rfakeroot ou debuild
-rfakeroot (-rfakeroot est actuellement utilise par defaut par debuild,
donc vous n'avez pas besoin de cet argument).
ASPECTS DE S'ECURIT'E
fakeroot est un programme normal, sans privileges speciaux. Il
n'augmente pas les privileges de l'utilisateur et n'altere pas la
securite du systeme.
FICHIERS
/usr/lib/libfakeroot/libfakeroot.so* La bibliotheque partagee qui
contient les fonctions simulees.
ENVIRONNEMENT
FAKEROOTKEY
La cle utilisee pour communiquer avec le demon fakeroot. Tout
programme qui demarre avec le bon LD_PRELOAD et une FAKEROOTKEY
d'un serveur actif se connectera automatiquement a ce demon, et
aura la meme << fausse >> vision des droits du systeme de
fichiers (si le serveur et le programme connecte ont bien ete
lances par le meme utilisateur).
LD_LIBRARY_PATH
LD_PRELOAD
Fakeroot a ete concu en encapsulant les appels systemes. On y
arrive en definissant LD_LIBRARY_PATH=/usr/lib/fakeroot et
LD_PRELOAD=libfakeroot.so.0. Cette bibliotheque est chargee
avant la bibliotheque C du systeme, d'ou l'interception de la
plupart des fonctions de la bibliotheque. Si vous devez definir
d'autres LD_LIBRARY_PATH ou LD_PRELOAD au sein d'un
environnement fakeroot, cela devrait etre fait en respectant
l'ordre de placement, par exemple comme dans
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/toto/titi/.
LIMITES
Versions des biblioth`eques
Toute commande executee sous fakeroot devra etre liee a la meme
version de la bibliotheque C que fakeroot lui-meme.
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 proprietaire de foo est reellement joost tandis que dans le
second cas, il aurait du etre root. Pour un paquet Debian, il
est toujours correct de donner a tous les fichiers
<< inconnus >> l'uid=gid=0. La vraie solution est de simuler
open() et create(), mais cela souleve d'autres problemes, comme
demontre 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 a jour minime de la libc (d'une
version dans laquelle la fonction stat() n'utilise pas open() a
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
simulee open(), qui a son tour appellera la fonction stat() de
la libc6, etc.). La correction n'a pas ete facile, mais une fois
corrige, ce n'etait plus qu'une question de temps avant qu'une
autre fonction ne se mette a utiliser open(). Quant au portage
sur un autre systeme d'exploitation, il n'a pas ete envisage. Il
a donc ete decide de limiter au maximum le nombre de fonctions
simulees par fakeroot, afin de limiter l'eventualite de ces
<< collisions >>.
GNU configure (et autres programmes du m^eme genre)
En pratique, fakeroot modifie le comportement du systeme. Les
programmes qui testent le systeme (tel que configure du GNU)
peuvent etre troubles par cela (ou, s'ils ne le sont pas, ils
risquent de solliciter fakeroot a un point tel que celui-ci
risque lui-meme de s'y perdre). Il est donc preferable de ne pas
lancer << configure >> dans un environnement fakeroot. Comme
configure doit etre lance par la cible build de debian/rules,
l'utilisation de << dpkg-buildpackage -rfakeroot >> gere
correctement ce probleme.
BOGUES
open() n'est pas simule. Ce n'est pas si grave que cela, mais si un
programme invoque open("file", O_WRONLY, 000), ecrit dans ce fichier
<< file >>, le ferme, puis reessaye ensuite de l'ouvrir en lecture,
alors cette tentative echouera, car les droits du fichier seront 000.
Le bogue, c'est que si root fait cette operation, alors open()
fonctionne, puisque les droits des fichiers ne sont pas du tout
verifies pour root. Il a ete choisi de ne pas simuler open(), car
open() est utilise par nombre d'autres fonctions de la libc (dont
certaines qui sont deja simulees par fakeroot), ce qui creerait des
boucles (ou pourrait en creer quand l'implementation des diverses
fonctions de la libc change).
COPIES
fakeroot est distribue sous la licence GNU General Public License.
(GPL 2.0 ou superieure).
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 ecrite 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
Projet Debian 6 aout 2004 fakeroot(1)