Fakeroot
La utilidad fakeroot , o la nueva utilidad fakeroot-ng (mismo propósito, técnica de implementación diferente) ejecuta un programa y finge al programa que se está ejecutando como root y que el sistema llama como chown
exitoso. Solo el programa cree que estas llamadas tuvieron éxito, nada se refleja realmente en el sistema de archivos (no puede serlo ya que fakeroot
no tiene privilegios adicionales). Sin embargo, si el programa cambia la propiedad de un archivo y luego toma alguna acción basada en la propiedad de ese archivo, esto puede cambiar el comportamiento del programa.
Una forma típica de obtener un trabajo útil de fakeroot ejecutando un entorno fakeroot donde ocurre lo siguiente:
- Cree algunos archivos, muévalos, cambie su propiedad y modos, etc.
- Crea un archivo de estos archivos.
Ejemplo:
fakeroot sh -c '
chown root:root usr/bin/foo
tar cf foo.tar usr
'
Debe utilizar una sola invocación de fakeroot
, ya que no hay memoria entre invocaciones.
Espacios de nombres de Linux
Solo para completar, mencionaré que si tiene un kernel de Linux ≥3.8, los espacios de nombres son otra forma de crear un entorno de simulación de raíz. El soporte de userland todavía no está allí, así que no entraré en más detalles.
Monta el archivo
Una forma diferente de resolver su problema es montar el archivo como un directorio. Puede usar archivemount , que es capaz de modificar varios formatos de archivo a través de libarchive , incluido tar comprimido.
mkdir mnt
archivemount foo.tar.xz mnt
chown root:root mnt/usr/bin/foo
fusermount -u mnt
tar --owner=root --group=root cfpJ files.tar.xz files/
da un errortar: You must specify one of the
-Acdtrux 'o--test-label' options Try
tar --help' otar --usage' for more information.