Fakeroot
Fakeroot утилита или более новая утилита fakeroot-нг ( той же цели, другой метод реализации) запускает программу и делает вид программы , что он работает как корень , и что системные вызовы , такие , как chown
удалось. Только программа считает, что эти вызовы выполнены успешно, на самом деле ничего не отражается в файловой системе (это не может быть, поскольку не fakeroot
имеет никаких дополнительных привилегий). Однако, если программа меняет владельца файла, а затем предпринимает некоторые действия, основанные на владении этим файлом, это может изменить поведение программы.
Типичный способ получить полезную работу из fakeroot, запустив среду fakeroot, где происходит следующее:
- Создавайте некоторые файлы, перемещайте их, меняйте их владельцев и режимы и т. Д.
- Создайте архив этих файлов.
Пример:
fakeroot sh -c '
chown root:root usr/bin/foo
tar cf foo.tar usr
'
Вам нужно использовать один вызов fakeroot
, так как между вызовами нет памяти.
Пространства имен Linux
Просто для полноты, я упомяну, что если у вас ядро Linux ≥3.8, то пространства имен - это еще один способ создать среду притворного корня. Поддержка пользователей еще не совсем готова, поэтому я не буду вдаваться в подробности.
Смонтировать архив
Другой способ решить вашу проблему - это смонтировать архив как каталог. Вы можете использовать archivemount , который способен изменять несколько форматов архивов через libarchive , включая сжатый tar.
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/
дает мне ошибкуtar: You must specify one of the
-Acdtrux 'или--test-label' options Try
tar --help' илиtar --usage' for more information.