Фейкворт
Fakeroot утиліта або новіша утиліта fakeroot-нг ( тієї ж мети, інший метод реалізації) запускає програму і робить вигляд програми , що він працює як корінь , і що системні виклики , такі , як chown
вдалося. Тільки програма вважає, що ці виклики вдалися, нічого фактично не відображається у файловій системі (це не може бути, оскільки 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.