241 lines
10 KiB
Groff
241 lines
10 KiB
Groff
.de CW
|
|
.sp
|
|
.nf
|
|
.ft CW
|
|
..
|
|
.\" Process this file with
|
|
.\" groff -man -Tascii foo.1
|
|
.\"
|
|
.\" "verbatim" environment (from strace.1)
|
|
.de CE
|
|
.ft
|
|
.fi
|
|
.sp
|
|
..
|
|
.\"
|
|
.\"*******************************************************************
|
|
.\"
|
|
.\" This file was generated with po4a. Translate the source file.
|
|
.\"
|
|
.\"*******************************************************************
|
|
.TH fakeroot 1 "5 de Outubro de 2014" "Projecto Debian" "Manual Debian"
|
|
.\" Manpage by J.H.M. Dassen <jdassen@debian.org>
|
|
.\" and Clint Adams <clint@debian.org>
|
|
.SH NOME
|
|
fakeroot \- corre um comando num ambiente onde finge privilégios de root para
|
|
manipulação de ficheiro
|
|
.SH SINOPSE
|
|
\fBfakeroot\fP \fB[\-l|\-\-lib\fP \fIbiblioteca]\fP \fB[\-\-faked\fP
|
|
\fIbinário\-falsificado\fP\fB]\fP \fB[\-i\fP \fIload\-file\fP\fB]\fP \fB[\-s\fP \fIsave\-file\fP\fB]\fP
|
|
\fB[\-u|\-\-unknown\-is\-real ]\fP \fB[\-b|\-\-fd\-base ]\fP \fB[\-h|\-\-help ]\fP
|
|
\fB[\-v|\-\-version ]\fP \fB[\-\-]\fP \fB[comando]\fP
|
|
.SH DESCRIÇÃO
|
|
\fBfakeroot\fP 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 \fBfakeroot\fP 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.
|
|
|
|
\fBfakeroot\fP works by replacing the file manipulation library functions
|
|
(chmod(2), stat(2) etc.) by ones that simulate the effect the real library
|
|
functions would have had, had the user really been root. These wrapper
|
|
functions are in a shared library \fB/usr/lib/*/libfakeroot\-*.so\fP or similar
|
|
location on your platform. The shared object is loaded through the
|
|
\fBLD_PRELOAD\fP mechanism of the dynamic loader. (See \fBld.so\fP(8))
|
|
|
|
Se você pretende compilar pacotes com o \fBfakeroot\fP, 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).
|
|
|
|
.SH OPÇÕES
|
|
.TP
|
|
\fB\-l\fP \fIbiblioteca\fP, \fB\-\-lib\fP \fIbiblioteca\fP
|
|
Especifica uma biblioteca wrapper alternativa.
|
|
.TP
|
|
\fB\-\-faked\fP\fI\ binário\fP
|
|
Especifica um binário alternativo para usar como fingido.
|
|
.TP
|
|
\fB[\-\-]\fP\fI\ comando\fP
|
|
Qualquer comando que deseje corre como fakeroot. Use \(oq\-\-\(cq se no
|
|
comando você tem outras opções que podem confundir a análise de opções do
|
|
fakeroot.
|
|
.TP
|
|
\fB\-s\fP\fI\ save\-file\fP
|
|
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
|
|
\fI/usr/share/doc/fakeroot/README.saving\fP para mais detalhes.
|
|
.TP
|
|
\fB\-i\fP\fI\ load\-file\fP
|
|
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 \fBfakeroot\fP.
|
|
.TP
|
|
\fB\-u\fP, \fB\-\-unknown\-is\-real\fP
|
|
Usa a posse real dos ficheiros anteriormente desconhecida para o fakeroot em
|
|
vez de fingir que eles são posse de root:root.
|
|
.TP
|
|
\fB\-b\fP\fI\ fd\fP
|
|
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.
|
|
.TP
|
|
\fB\-h\fP
|
|
Mostra a ajuda.
|
|
.TP
|
|
\fB\-v\fP
|
|
Mostra a versão.
|
|
|
|
.SH EXEMPLOS
|
|
Aqui está uma sessão exemplo com o \fBfakeroot\fP. 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.
|
|
.CW
|
|
$ 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
|
|
.CE
|
|
Apenas os efeitos que o utilizador \fBjoost\fP podia fazer aconteceram de
|
|
verdade.
|
|
|
|
\fBfakeroot\fP foi especificamente escrito para permitir aos utilizadores
|
|
criarem pacotes Debian GNU/Linux (no formato \fBdeb(5)\fP) sem lhes dar
|
|
privilégios de root. Isto pode ser feito por comandos como
|
|
\fBdpkg\-buildpackage \-rfakeroot\fP ou \fBdebuild \-rfakeroot\fP (na realidade,
|
|
\-rfakeroot é predefinição no debuild nos dias que correm, por isso você não
|
|
precisa desse argumento).
|
|
.SH "ASPECTOS DE SEGURANÇA"
|
|
\fBfakeroot\fP é um programa normal, não\-setuid. Não aumenta os privilégios do
|
|
utilizador nem baixa a segurança do sistema.
|
|
.SH FICHEIROS
|
|
\fI/usr/lib/*/libfakeroot\-*.so\fP The shared library containing the wrapper
|
|
functions.
|
|
.SH AMBIENTE
|
|
.IP \fBFAKEROOTKEY\fP
|
|
A chave usada para comunicar com o daemon do fakeroot. Qualquer programa
|
|
arrancado com o \fBLD_PRELOAD\fP correto e um \fBFAKEROOTKEY\fP 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).
|
|
.IP \fBLD_LIBRARY_PATH\fP
|
|
.IP \fBLD_PRELOAD\fP
|
|
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 \fBLD_LIBRARY_PATH\fP ou \fBLD_PRELOAD\fP de
|
|
dentro de um ambiente fakeroot, deverá ser definido em relação aos caminhos
|
|
fornecidos, como em \fBLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/bar/\fP
|
|
|
|
.SH LIMITAÇÕES
|
|
.IP "\fBVersões de biblioteca\fP"
|
|
Cada comando executado dentro do \fBfakeroot\fP precisa de ser linkado à mesma
|
|
versão de biblioteca C do próprio \fBfakeroot\fP.
|
|
.IP \fBopen()/create()\fP
|
|
O fakeroot não envolve o open(), create(), etc. Então, se o utilizador
|
|
\fBjoost\fP também o fizer
|
|
.CW
|
|
touch foo
|
|
fakeroot
|
|
ls \-al foo
|
|
.CE
|
|
ou do outro modo contrário,
|
|
.CW
|
|
fakeroot
|
|
touch foo
|
|
ls \-al foo
|
|
.CE
|
|
No primeiro caso o fakeroot não tem maneira de saber isso, o dono de foo
|
|
deverá realmente ser \fBjoost\fP enquanto no segundo caso deveria ter sido
|
|
\fBroot\fP. 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 \fBopen()\fP e \fBcreate()\fP, 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 \fBfakeroot \&.\fP. Aconteceu que uma actualização menor da libc (de um caso em que a função
|
|
\fBstat()\fP não usava \fBopen()\fP para um com uma função \fBstat()\fP que usava (em
|
|
alguns casos) \fBopen()\fP), veio a causar falhas de segmentação inexplicáveis
|
|
(isto é, o \fBstat()\fP da libc6 chamava o \fBopen()\fP envolvido, o qual iria
|
|
então chamar a \fBstat()\fP 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 \(oqcollisions\(cq.
|
|
.IP "\fBconfigure do GNU (e outros programas como tal)\fP"
|
|
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.
|
|
.SH 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).
|
|
.SH COPIAR
|
|
\fBfakeroot\fP é distribuído sob a GNU General Public License. (GPL 2.0 ou
|
|
superior).
|
|
.SH AUTORES
|
|
.TP
|
|
joost witteveen
|
|
<\fIjoostje@debian.org\fP>
|
|
.TP
|
|
Clint Adams
|
|
<\fIclint@debian.org\fP>
|
|
.TP
|
|
Timo Savola
|
|
.SH TRADUTOR
|
|
Américo Monteiro <a_monteiro@gmx.com>
|
|
.SH "PÁGINA DE MANUAL"
|
|
a maioria por J.H.M. Dassen <jdassen@debian.org> Bastantes
|
|
modificações/adições por joost e Clint.
|
|
.SH "VEJA TAMBÉM"
|
|
\fBfaked\fP(1) \fBdpkg\-buildpackage\fP(1), \fBdebuild\fP(1)
|
|
\fB/usr/share/doc/fakeroot/DEBUG\fP
|
|
|