Man page - fakeroot-sysv(1)

Packages contains this manual

Available languages:

en fr es pt nl sv ro de

Manual

fakeroot

NOME
SINOPSE
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