Я работаю как пользователь, и я хотел бы создать архив tar, который при распаковке (по корню) будет извлекать свои файлы с правами суперпользователя (в противном случае root должен был бы изменить владельца вручную для каждого файла после того, как файлы были извлечены) к месту назначения).
Я нашел, fakeroot
который, кажется, делает именно это. Но я не могу найти синтаксис, который мне нужно использовать для создания моего архива.
Как я могу создать архив tar.xz, чтобы файлы имели права root при распаковке root?
do something with fakeroot ...
tar cfpJ foo.tar.xz foo/
files
permissions
tar
user1968963
источник
источник
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.
-
строка перед вашими короткими опциями:tar --owner=root --group=root -cfpJ ...
Т.е.-cfpJ
нетcfpJ
.tar --owner=root --group=root -cfpJ files.tar.xz files/
дает мне еще одну ошибку:tar: files.tar.xz: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errors
и более того, он создает файл с именемpJ
.f
в конце (потому что это имеет больше смысла, интуитивно понятно) и низко, и вот, я получаю ту же ошибку с-cfpJ
НО-cpJf
работами.Fakeroot
Fakeroot утилита или более новая утилита fakeroot-нг ( той же цели, другой метод реализации) запускает программу и делает вид программы , что он работает как корень , и что системные вызовы , такие , как
chown
удалось. Только программа считает, что эти вызовы выполнены успешно, на самом деле ничего не отражается в файловой системе (это не может быть, поскольку неfakeroot
имеет никаких дополнительных привилегий). Однако, если программа меняет владельца файла, а затем предпринимает некоторые действия, основанные на владении этим файлом, это может изменить поведение программы.Типичный способ получить полезную работу из fakeroot, запустив среду fakeroot, где происходит следующее:
Пример:
Вам нужно использовать один вызов
fakeroot
, так как между вызовами нет памяти.Пространства имен Linux
Просто для полноты, я упомяну, что если у вас ядро Linux ≥3.8, то пространства имен - это еще один способ создать среду притворного корня. Поддержка пользователей еще не совсем готова, поэтому я не буду вдаваться в подробности.
Смонтировать архив
Другой способ решить вашу проблему - это смонтировать архив как каталог. Вы можете использовать archivemount , который способен изменять несколько форматов архивов через libarchive , включая сжатый tar.
источник
archivemount
, но он все еще требует повышения привилегий, и даже если пользователь находится в доверенной группе, которой разрешено монтировать и размонтировать, процесс завершается неудачноchown
, поэтому необходимо использовать какие-то сторонние инструменты, такие какfakeroot
или пространства имен , тоже.