Provided by: fakeroot_1.33-1_amd64 bug

NOME

       fakeroot  -  corre um comando num ambiente onde finge privilégios de root para manipulação
       de ficheiro

SINOPSE

       fakeroot [-l|--lib biblioteca] [--faked binário-falsificado] [-i load-file] [-s save-file]
       [-u|--unknown-is-real ] [-b|--fd-base ] [-h|--help ] [-v|--version ] [--] [comando]

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 corre 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 foi especificamente escrito para permitir aos utilizadores criarem pacotes Debian
       GNU/Linux (no formato deb(5)) sem lhes dar privilégios de root. Isto pode  ser  feito  por
       comandos como dpkg-buildpackage -rfakeroot ou debuild -rfakeroot (na realidade, -rfakeroot
       é predefinição no debuild nos dias que correm, por isso você não precisa desse argumento).

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

              No  primeiro  caso  o  fakeroot não tem maneira de saber isso, o dono de foo deverá
              realmente ser joost enquanto  no  segundo  caso  deveria  ter  sido  root.  Para  o
              empacotamento de Debian, a predefinição de dar a todos os ficheiros "desconhecidos"
              uid=gid=0, está sempre OK. A maneira real para contornar isto é envolver  open()  e
              create(),  mas  isso cria outros problemas, como demonstrado pelo pacote libtricks.
              Este pacote envolvia muitas mais funções, e tentava  fazer  muito  mais  do  que  o
              fakeroot  ..  Aconteceu  que  uma  actualização  menor da libc (de um caso em que a
              função stat() não usava open() para um com uma função stat() que usava  (em  alguns
              casos) open()), veio a causar falhas de segmentação inexplicáveis (isto é, o stat()
              da libc6 chamava o open() envolvido, o qual iria então chamar a  stat()  da  libc6,
              etc.).  Corrigir  isto  não  foi lá muito fácil, mas após corrigido, foi apenas uma
              questão de tempo antes de outra função passar a usar open(), e esqueçam  de  tentar
              portá-lo para outro sistema operativo diferente. Assim Eu decidi manter o número de
              funções  envolvidas  pelo  fakeroot  o  mais  pequeno  possível,  para  limitar   a
              possibilidade de ‘collisions’.

       configure do GNU (e outros programas como tal)
              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

       a  maioria por J.H.M. Dassen <jdassen@debian.org> Bastantes modificações/adições por joost
       e Clint.

VEJA TAMBÉM

       faked(1)  dpkg-buildpackage(1), debuild(1) /usr/share/doc/fakeroot/DEBUG