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 October 2014" "Proyecto Debian" "Manual de Debian"
|
||
.\" Manpage by J.H.M. Dassen <jdassen@debian.org>
|
||
.\" and Clint Adams <clint@debian.org>
|
||
.SH NOMBRE
|
||
fakeroot \- ejecuta una orden en un entorno que falsea privilegios de
|
||
superusuario para la manipulación de ficheros
|
||
.SH SINOPSIS
|
||
\fBfakeroot\fP \fB[\-l|\-\-lib\fP \fIbiblioteca]\fP \fB[\-\-faked\fP \fIbinario\-faked\fP\fB]\fP
|
||
\fB[\-i\fP \fIfichero\-a\-cargar\fP\fB]\fP \fB[\-s\fP \fIfichero\-salvado\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[orden]\fP
|
||
.SH DESCRIPCIÓN
|
||
\fBfakeroot\fP ejecuta una orden en un entorno donde parece que se tiene
|
||
permisos de superusuario para la manipulación de ficheros. Útil para
|
||
permitir a usuarios crear archivos (tar, ar, .deb etc.) con ficheros con
|
||
permisos/propietarios de superusuario. Sin \fBfakeroot\fP uno necesitaría
|
||
privilegios de superusuario para crear los ficheros constituyentes del
|
||
archivo con los permisos y propietario correctos, y después empaquetarlos, o
|
||
uno tendría que construir los archivos directamente, sin usar el archivador.
|
||
|
||
\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))
|
||
|
||
Si pretende construir paquetes usando \fBfakeroot\fP, es aconsejable construir
|
||
primero el paquete fakeroot: la etapa "debian/rules build" tiene algunas
|
||
comprobaciones (la mayoría de ellas buscan fallos de versiones viejas de
|
||
fakeroot). Si estas pruebas fallan (por ejemplo, porque tiene ciertos
|
||
programas libc5 en el sistema), también fallará la construcción de otros
|
||
paquetes mediante fakeroot, pero de formas mucho más sutiles.
|
||
|
||
Además, dese cuenta que es mejor no realizar la compilación de los binarios
|
||
bajo fakeroot. Especialmente configure y demás programas del estilo no se
|
||
comportan bien cuando el sistema se comporta de forma diferente a la
|
||
esperada. (o, de forma aleatoria, estos programas eliminan algunas variables
|
||
de entorno, algunas de las cuales necesita fakeroot).
|
||
|
||
.SH OPCIONES
|
||
.TP
|
||
\fB\-l\fP \fIbiblioteca\fP, \fB\-\-lib\fP \fIbiblioteca\fP
|
||
Especifica una biblioteca envoltorio.
|
||
.TP
|
||
\fB\-\-faked\fP\fI\ binario\fP
|
||
Especifica un binario alternativo a usar en vez de faked.
|
||
.TP
|
||
\fB[\-\-]\fP\fI\ orden\fP
|
||
Cualquier orden que quieras ejecutar bajo fakeroot. Use \(oq\-\-\(cq si en la
|
||
orden tiene otras opciones que puedan confundir el análisis de las opciones
|
||
de fakeroot.
|
||
.TP
|
||
\fB\-s\fP\fI\ fichero\-salvado\fP
|
||
Guarda el entorno fakeroot en fichero\-salvado al salir. Este fichero puede
|
||
usarse para restaurar el entorno más tarde usando \-i. Sin embargo, este
|
||
fichero fallará y fakeroot se comportará de forma extraña a menos que no
|
||
modifique los ficheros creados (N.T. del inglés touched, haciendo referencia
|
||
a la orden touch, con la que fakeroot crea algunos ficheros vacíos para
|
||
simular algunas situaciones) dentro del entorno fakeroot cuando esté fuera
|
||
del entorno. Aun así, esto puede ser útil. Por ejemplo, puede usarse con
|
||
rsync(1) para guardar y restaurar el árbol de directorios completo con la
|
||
información de usuarios, grupos y dispositivos completa sin necesidad de ser
|
||
superusuario. Consulte \fI/usr/share/doc/fakeroot/README.saving\fP para más
|
||
detalles.
|
||
.TP
|
||
\fB\-i\fP\fI\ fichero\-a\-cargar\fP
|
||
Carga un entorno fakeroot de fichero\-a\-cargar previamente salvado usando
|
||
\-s. Note que esto no salva implícitamente el fichero, use también \-s para
|
||
conseguir esto. Es seguro usar el mismo fichero para \-i y \-s en una misma
|
||
invocación de \fBfakeroot.\fP
|
||
.TP
|
||
\fB\-u\fP, \fB\-\-unknown\-is\-real\fP
|
||
Usa el propietario real para ficheros desconocidos previamente por fakeroot
|
||
en vez de suponer que pertenecen a root:root.
|
||
.TP
|
||
\fB\-b\fP\fI\ fd\fP
|
||
Especifica el descriptor de fichero base (sólo en modo TCP). Fd es el número
|
||
mínimo de descriptor de fichero a usar para las conexiones TCP, puede ser
|
||
importante para evitar conflictos con los descriptores de ficheros usados
|
||
por programas ejecutándose dentro de \fBfakeroot.\fP
|
||
.TP
|
||
\fB\-h\fP
|
||
Muestra la ayuda.
|
||
.TP
|
||
\fB\-v\fP
|
||
Muestra la versión.
|
||
|
||
.SH EJEMPLOS
|
||
Aquí hay un ejemplo de una sesión con \fBfakeroot\fP. Dese cuenta que dentro
|
||
de un entorno fakeroot la manipulación de ficheros que requiere privilegios
|
||
de superusuario se realiza con éxito, pero realmente no se lleva a cabo.
|
||
.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
|
||
Sólo las operaciones que el usuario \fBjoost\fP puede hacer se llevan a cabo
|
||
realmente.
|
||
|
||
\fBfakeroot\fP se escribió específicamente para permitir que los usuario
|
||
pudiesen crear paquetes (en el formato \fBdeb(5)\fP ) sin tener privilegios de
|
||
superusuario. Esto puede hacerse con órdenes como \fBdpkg\-buildpackage \-rfakeroot\fP o \fBdebuild \-rfakeroot\fP (realmente, \-rfakeroot es predeterminado
|
||
en debuild en estos momentos, así que no necesita el argumento).
|
||
.SH "ASPECTOS DE SEGURIDAD"
|
||
\fBfakeroot\fP es un programa normal, sin el bit setuid. No aumenta los
|
||
privilegios de un usuario ni disminuye la seguridad del sistema.
|
||
.SH FICHEROS
|
||
\fI/usr/lib/*/libfakeroot\-*.so\fP The shared library containing the wrapper
|
||
functions.
|
||
.SH ENTORNO
|
||
.IP \fBFAKEROOTKEY\fP
|
||
La llave usada para comunicarse con el demonio fakeroot. Cualquier programa
|
||
comenzado con el \fBLD_PRELOAD\fP correcto y la \fBFAKEROOTKEY\fP de un demonio en
|
||
ejecución conectará automáticamente con ese demonio, y tendrá la misma
|
||
visión "falsa" de los permisos/propietarios de los ficheros del
|
||
sistema. (sumiendo que el demonio y el programa que se conecta los ejecute
|
||
el mismo usuario).
|
||
.IP \fBLD_LIBRARY_PATH\fP
|
||
.IP \fBLD_PRELOAD\fP
|
||
Fakeroot está implementado envolviendo las llamadas al sistema. Esto se
|
||
realiza modificando las variables de entorno de forma que queden como
|
||
LD_LIBRARY_PATH=/usr/lib/fakeroot y LD_PRELOAD=libfakeroot.so.0. Esa
|
||
biblioteca se carga antes que la biblioteca de C del sistema, y de esa forma
|
||
se interceptan gran parte de las llamadas al sistema. Si necesita modificar
|
||
\fBLD_LIBRARY_PATH\fP o \fBLD_PRELOAD\fP dentro de un entorno fakeroot, deberán
|
||
quedar establecidos de forma relativa, como en
|
||
\fBLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/bar/\fP
|
||
|
||
.SH LIMITACIONES
|
||
.IP "\fBVersiones de la biblioteca\fP"
|
||
Toda orden ejecutada con \fBfakeroot\fP necesita enlazarse con la misma versión
|
||
de la biblioteca de C del mismo \fBfakeroot.\fP
|
||
.IP \fBopen()/create()\fP
|
||
fakeroot no envuelve open(), create(), etc. Así, que si el usuario \fBjoost\fP
|
||
hace
|
||
.CW
|
||
touch tal
|
||
fakeroot
|
||
ls \-al tal
|
||
.CE
|
||
o del otro modo,
|
||
.CW
|
||
fakeroot
|
||
touch tal
|
||
ls \-al tal
|
||
.CE
|
||
fakeroot no puede saber en el primer caso que, el propietario de tal
|
||
realmente debe ser \fBjoost\fP mientras que en el segundo debe ser \fBroot\fP.
|
||
Para los paquetes Debian, dar a todos los ficheros "desconocidos" uid=gid=0
|
||
por omisión, está siempre bien. La forma real de solucionar esto es envolver
|
||
\fBopen()\fP y \fBcreate()\fP, pero esto crea otros problemas, como demuestra el
|
||
paquete libtricks. Este paquete envuelve más funciones, e intenta hacer más
|
||
cosas que \fBfakeroot .\fP Se vio que una pequeña actualización de libc (de una
|
||
donde la función \fBstat()\fP no usaba \fBopen()\fP a otra en la que \fBstat()\fP
|
||
usaba (en algunas ocasiones) \fBopen()\fP), causaba violaciones de segmento
|
||
inexplicables (esto es, el \fBstat()\fP de libc6 llamaba el \fBopen()\fP envuelto,
|
||
que luego llamaba al \fBstat()\fP de libc6, etc). Arreglarlo no fue tan
|
||
difícil, pero una vez arreglado, es cuestión de tiempo antes de que otra
|
||
función empiece a usar open(), ni hablar de portarlo a otro sistema
|
||
operativo. Así que decidí reducir al máximo el número de funciones envuelta
|
||
por fakeroot, para limitar la probabilidad de \(oqcolisiones\(cq.
|
||
.IP "\fBGNU configure (y otros programas por el estilo)\fP"
|
||
fakeroot, en efecto, cambia el comportamiento del sistema. Los programas que
|
||
prueban el sistema, como GNU configure, pueden verse confundidos por esto (o
|
||
si no lo hacen, llevarán a fakeroot tan al límite que será este el que se
|
||
confunda). Así que es aconsejable no ejecutar el objetivo "configure" en un
|
||
entorno fakeroot. Como configure debe ejecutarse en "debian/rules build",
|
||
"dpkg\-buildpackage \-rfakeroot" tiene cuidado de esto, haciéndolo
|
||
correctamente.
|
||
.SH FALLOS
|
||
No envuelve open(). Esto no es malo por si mismo, pero si un programa hace
|
||
open("fichero", O_WRONLY, 000), escribe en "fichero", lo cierra, y trata de
|
||
abrirlo de nuevo para leer el fichero, entonces falla al abrirlo, ya que el
|
||
modo del fichero será 000. El fallo es que si el superusuario hace lo mismo,
|
||
open() será satisfactorio, ya que los permisos del fichero no se comprueban
|
||
para el superusuario. Elegí no envolver open(), ya que open() se usa en
|
||
muchas otras funciones de libc (incluso en aquellas que ya están envueltas),
|
||
de forma que se crean bucles (o posibles bucles futuros, cuando la
|
||
implementación de varias funciones de libc cambie ligeramente).
|
||
.SH COPIA
|
||
\fBfakeroot\fP se distribuye bajo la Licencia Pública General de GNU. (GPL 2.0
|
||
o posterior).
|
||
.SH AUTORES
|
||
.TP
|
||
joost witteveen
|
||
<\fIjoostje@debian.org\fP>
|
||
.TP
|
||
Clint Adams
|
||
<\fIclint@debian.org\fP>
|
||
.TP
|
||
Timo Savola
|
||
.SH TRADUCTOR
|
||
Traducci<EFBFBD>n de Rub<75>n Porras Campo <debian\-l10n\-spanish@lists.debian.org>
|
||
.SH "PÁGINA DEL MANUAL"
|
||
la mayor parte de J.H.M. Dassen <jdassen@debian.org> con muchas
|
||
modificaciones y añadiduras de joost y Clint.
|
||
.SH "VÉASE ADEMÁS"
|
||
\fBfaked\fP(1) \fBdpkg\-buildpackage\fP(1), \fBdebuild\fP(1)
|
||
\fB/usr/share/doc/fakeroot/DEBUG\fP
|
||
|