Man page - fakeroot-tcp(1)
Packages contains this manual
Available languages:
en fr es pt nl sv ro deManual
fakeroot
NOMESINOPSE
DESCRIĂĂO
OPĂĂES
EXEMPLOS
ASPECTOS DE SEGURANĂA
FICHEIROS
AMBIENTE
LIMITAĂĂES
BUGS
COPIAR
AUTORES
TRADUTOR
PĂGINA DE MANUAL
VEJA TAMBĂM
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.
Note também que, é melhor não fazer a compilação dos próprios binårios sob o fakeroot. Especialmente o configure e "amigos" não gostam quando o sistema subitamente se comporta de modo diferente do que eles esperam (ou, eles desconfiguram aleatoriamente algumas variåveis de ambiente, algumas das quais o fakeroot necessita).
OPĂĂES
-l biblioteca , --lib biblioteca
Especifica uma biblioteca wrapper alternativa.
--faked binĂĄrio
Especifica um binĂĄrio alternativo para usar como fingido.
[--] comando
Qualquer comando que deseje correr como fakeroot. Use â--â se no comando vocĂȘ tem outras opçÔes que podem confundir a anĂĄlise de opçÔes do fakeroot.
-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
A chave usada para comunicar com o daemon do fakeroot. Qualquer programa arrancado com o LD_PRELOAD correto e um FAKEROOTKEY de um daemon em execução irå ligar-se automaticamente a esse daemon, e terå a mesma visão "falsa" das permissÔes/propriedades do sistema de ficheiros (assumindo que o daemon e o programa que se liga foram arrancados pelo mesmo utilizador).
LD_LIBRARY_PATH
LD_PRELOAD
fakeroot Ă© implementado ao envolver chamadas do sistema. Isto Ă© conseguido ao definir LD_LIBRARY_PATH=/usr/lib/fakeroot e LD_PRELOAD=libfakeroot.so.0. Essa biblioteca Ă© carregada antes da biblioteca C do sistema, e assim a maioria das funçÔes da biblioteca sĂŁo interceptadas por ela. VocĂȘ precisa de definir ou LD_LIBRARY_PATH ou LD_PRELOAD de dentro de um ambiente fakeroot, deverĂĄ ser definido em relação aos caminhos fornecidos, como em 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