Provided by: fakeroot_1.37.1-1_amd64 

NOME
fakeroot - corre um comando num ambiente onde finge privilégios de root para manipulação de ficheiro
SINOPSE
fakeroot [-l|--lib library] [--faked faked-binary] [-i load-file] [-s save-file] [-u|--unknown-is-real]
[-b|--fd-base] [-h|--help] [-v|--version] [--] [command]
DESCRIÇÃO
fakeroot corre um comando num ambiente onde aparenta ter privilégios de root para manipulação de
ficheiros. Isto é útil para permitir aos utilizadores criar arquivos (tar, ar, .deb etc.) com ficheiros
dentro com permissões/posse de root. Sem o fakeroot seria preciso ter privilégios de root para criar os
ficheiros constituintes dos arquivos com as permissões e posse atuais, e depois empacota-los, ou seria
preciso construir os arquivos diretamente, sem usar o arquivador.
fakeroot funciona ao substituir as funções da biblioteca de manipulação de ficheiros (chmod(2), stat(2)
etc.), por outras que simulam o efeito que teriam as funções da biblioteca real, caso o utilizador fosse
realmente o root. Estas funções envolventes estão numa biblioteca partilhada /usr/lib/*/libfakeroot-*.so
ou localização semelhante na sua plataforma. O objecto partilhado é carregado através do mecanismo
LD_PRELOAD do carregador dinâmico. (Veja ld.so(8))
Se você pretende compilar pacotes com o fakeroot, por favor tente primeiro compilar o pacote fakeroot: a
fase "debian/rules build" tem alguns testes (testar principalmente por bugs em antigas versões do
fakeroot). Se esses testes falharem (por exemplo porque você tem certos programas da libc5 no seu
sistema), os outros pacotes que compilem com o fakeroot irão muito provavelmente falhar também, mas
possivelmente de maneiras muito mais subtis.
Also, note that it's best not to do the building of the binaries themselves under fakeroot. Especially
configure and friends don't like it when the system suddenly behaves differently from what they expect
(or, they randomly unset some environment variables, some of which fakeroot needs).
OPÇÕES
-l biblioteca, --lib biblioteca
Especifica uma biblioteca wrapper alternativa.
--faked binário
Especifica um binário alternativo para usar como fingido.
[--] comando
Any command you want to be run as fakeroot. Use ‘--’ if in the command you have other options that
may confuse fakeroot's option parsing.
-s save-file
Guarda o ambiente do fakeroot para o save-file ao sair. Este ficheiro pode ser usado para
restaurar o ambiente mais tarde usando -i. No entanto, este ficheiro irá ter fugas e o fakeroot
irá comportar-se de modo estranho a menos que você deixe os ficheiros que foram "mexidos" dentro
do fakeroot, isolados e inalterados quando fora do ambiente. Mesmo assim, isto poderá ser útil.
Por exemplo, pode ser usado com o rsync(1) para salvaguardar e restaurar árvores de diretórios
inteiras com informações de utilizador, grupo e dispositivo sem a necessidade de ser root. Veja
/usr/share/doc/fakeroot/README.saving para mais detalhes.
-i load-file
Carrega um ambiente do fakeroot previamente guardado usando -s a partir de load-file. Note que
isto não salva implicitamente o ficheiro, use -s também para esse comportamento. E seguro usar o
mesmo ficheiro para ambos -i e -s numa única invocação do fakeroot.
-u, --unknown-is-real
Usa a posse real dos ficheiros anteriormente desconhecida para o fakeroot em vez de fingir que
eles são posse de root:root.
-b fd Especifica a base fd (apenas modo TCP). O fd é o número descritor de ficheiro mínimo usado para
ligações TCP; isto pode ser importante para evitar conflitos com os descritores de ficheiro usados
pelos programas que correm sob o fakeroot.
-h Mostra a ajuda.
-v Mostra a versão.
EXEMPLOS
Aqui está uma sessão exemplo com o fakeroot. Note que dentro do ambiente fingido de root a manipulação de
ficheiro que requer privilégios de root tem sucesso, mas na realidade não está a acontecer.
$ 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
Apenas os efeitos que o utilizador joost podia fazer aconteceram de verdade.
fakeroot was specifically written to enable users to create Debian GNU/Linux packages (in the deb(5)
format) without giving them root privileges. This can be done by commands like dpkg-buildpackage
-rfakeroot or debuild -rfakeroot (actually, -rfakeroot is default in debuild nowadays, so you don't need
that argument).
ASPECTOS DE SEGURANÇA
fakeroot é um programa normal, não-setuid. Não aumenta os privilégios do utilizador nem baixa a segurança
do sistema.
FICHEIROS
/usr/lib/*/libfakeroot-*.so A biblioteca partilhada que contém as funções wrapper.
AMBIENTE
FAKEROOTKEY
The key used to communicate with the fakeroot daemon. Any program started with the right
LD_PRELOAD and a FAKEROOTKEY of a running daemon will automatically connect to that daemon, and
have the same "fake" view of the file system's permissions/ownerships (assuming the daemon and
connecting program were started by the same user).
LD_LIBRARY_PATH
LD_PRELOAD
fakeroot is implemented by wrapping system calls. This is accomplished by setting
LD_LIBRARY_PATH=/usr/lib/fakeroot and LD_PRELOAD=libfakeroot.so.0. That library is loaded before
the system's C library, and so most of the library functions are intercepted by it. If you need
to set either LD_LIBRARY_PATH or LD_PRELOAD from within a fakeroot environment, it should be set
relative to the given paths, as in LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/bar/
LIMITAÇÕES
Versões de biblioteca
Cada comando executado dentro do fakeroot precisa de ser ligado por link à mesma versão de
biblioteca C do próprio fakeroot.
open()/create()
O fakeroot não envolve o open(), create(), etc. Então, se o utilizador joost também o fizer
touch foo
fakeroot
ls -al foo
ou do outro modo contrário,
fakeroot
touch foo
ls -al foo
fakeroot has no way of knowing that in the first case, the owner of foo really should be joost
while the second case it should have been root. For the Debian packaging, defaulting to giving
all "unknown" files uid=gid=0, is always OK. The real way around this is to wrap open() and
create(), but that creates other problems, as demonstrated by the libtricks package. This package
wrapped many more functions, and tried to do a lot more than fakeroot . It turned out that a minor
upgrade of libc (from one where the stat() function didn't use open() to one with a stat()
function that did (in some cases) use open() ), would cause unexplainable segfaults (that is, the
libc6 stat() called the wrapped open() , which would then call the libc6 stat() , etc). Fixing
them wasn't all that easy, but once fixed, it was just a matter of time before another function
started to use open(), never mind trying to port it to a different operating system. Thus I
decided to keep the number of functions wrapped by fakeroot as small as possible, to limit the
likelihood of ‘collisions’.
GNU configure (and other such programs)
O fakeroot, efectivamente, está a alterar o modo como o sistema se comporta. Programas que testam
o sistema como o configure do GNU podem ficar confusos por isto (ou se não ficarem, podem
"stressar" o fakeroot tanto que o próprio fakeroot possa ficar confuso). Portanto, é aconselhável
não correr o "configure" de dentro do fakeroot. Como o configure deverá ser chamado na meta
"debian/rules build", correr "dpkg-buildpackage -rfakeroot" actualmente toma conta disto.
BUGS
Não envolve open(). Isto não é mau por si próprio, mas se um programa fizer open("file", O_WRONLY, 000),
escrever no ficheiro "file" e o fechar, e depois tentar abri-lo para ler o ficheiro, então essa abertura
vai falhar, pois o modo do ficheiro será 000. O bug é tal que se o root fizer o mesmo, open() irá ter
sucesso, pois as permissões não são verificadas para o root. Eu escolhi não envolver open(), pois open()
é usado por muitas outras funções na libc (mesmo aquelas que já estão envolvidas), assim criando ciclos
viciosos (ou possíveis ciclos futuros, quando a implementação de várias funções da libc mudarem
ligeiramente).
COPIAR
fakeroot é distribuído sob a GNU General Public License. (GPL 2.0 ou superior).
AUTORES
joost witteveen
<joostje@debian.org>
Clint Adams
<clint@debian.org>
Timo Savola
TRADUTOR
Américo Monteiro <a_monteiro@gmx.com>
PÁGINA DE MANUAL
mostly by J.H.M. Dassen <jdassen@debian.org> with rather a lot of modsifications and additions by joost
and Clint.
VEJA TAMBÉM
debuild(1), dpkg-buildpackage(1), faked(1), /usr/share/doc/fakeroot/DEBUG
Projecto Debian 2024-12-19 fakeroot(1)